「du」が私の「rsync」バックアップが元のバックアップとサイズが異なることを報告するのはなぜですか?

「du」が私の「rsync」バックアップが元のバックアップとサイズが異なることを報告するのはなぜですか?

次のオプションを使用して、$HOME外部ストレージドライブにディレクトリバックアップを作成しています。rsync

--archive --xattrs --hard-links

新しくバックアップした後、du一部のバックアップディレクトリは元のディレクトリとは異なるサイズで報告されます。たとえば、対応するコマンド出力のバックアップコピーdu -bs ~/.mozilla/firefox/<profile>/datareporting/archived/2024-01/出力です。31981253194029

ただし、を追加して出力ファイルサイズを*実行して合計することができます。バックアップコピーに対応するコマンドは同じ結果を提供します。du -bs ~/.mozilla/firefox/<profile>/datareporting/archived/2024-01/*3165357

だから私の質問は次のとおりです。

  • rsyncすべてのデータをバックアップできませんでしたか~/.mozilla?それとも私が間違って使っているのでしょうかdu
  • duバックアップコピーの.mozilla/firefox/<profile>/datareporting/archived/2024-01/ファイルサイズは元のファイルとは異なりますが、ディレクトリに含まれるファイルのサイズは同じ理由は何ですか?
  • バックアップを誤って使用した場合、バックアップduのサイズが元のディレクトリとまったく同じかどうかを正確に確認できますか$HOME

メモ:

  • shopt -s dotglob報告されたサイズの違いに対してドットファイルが責任を負わないように設定しましたdu
  • 私の$HOMEファイルシステムはSSDにあり、バックアップドライブはHDDです。
  • 両方のファイルシステムext4
  • 私はDebian 12を使用しています。

ベストアンサー1

明確にするために、各質問に1つずつ答えていきます。

1. rsyncは~/.mozillaの下のすべてのデータをバックアップできませんか?それともduを間違って使用していますか?

提供された情報によると、rsync失敗したバックアップデータがないようです。実際にディレクトリ内の個々のファイルのサイズを集計すると、元のファイルとバックアップファイルの合計が一致するため、rsyncすべてのデータが正常にコピーされていることを示します。ディレクトリ全体に報告された合計サイズとそのコンテンツの合計に表示される違いは、ファイルシステムがディレクトリメタデータとファイル自体にスペースを割り当てる方法の違いによるduものです。ディレクトリとファイルが使用するスペースは、ファイルシステムのブロックサイズと割り当てに基づいて計算されます。これは、特に同じファイルシステムタイプ(ext4)を使用しても、異なるドライブ(SSDとHDD)間で異なる可能性があります。dursyncdu

2. du looking.mozilla/firefox//datareporting/archived/2024-01/のバックアップコピーは元のファイルとサイズが異なりますが、レポートディレクトリに含まれるファイルのサイズはなぜ同じですか?

du各ドライブのファイルシステムがディレクトリにスペースを割り当ててメタデータを保存する方法によって、ディレクトリ自体のサイズが異なって報告されます。各ファイルシステムは、ディレクトリメタデータとブロック割り当てを異なる方法で処理できるため、そのディレクトリのファイルサイズが同じであっても、報告されたディレクトリサイズがわずかに異なる場合があります。これは、ファイルシステムのブロックサイズ、ディレクトリ内のファイル数(ディレクトリサイズに影響を与えるメタデータストアのため)、ファイルシステム固有の最適化、またはメタデータ処理の違いなどの要因によって影響を受ける可能性があります。要約すると、ファイルのサイズが正確に一致すると述べたため、これはファイル自体が正しくバックアップされ、サイズの違いはディレクトリメタデータまたはファイルシステムの割り当ての違いに起因するという考えを強化します。

3.誤ってduを使用した場合は、バックアップが元の$ HOMEディレクトリとまったく同じサイズであるかどうかを正確に確認できますか?

特に、ディレクトリなどの重要なデータを処理するときにバックアップの完全性と完全性を正確に確認するために$HOMEサイズ比較を使用することは、上記の理由で最も信頼できる方法ではない可能性があります。du代わりに、次のアプローチを試してください。

  • チェックサムの確認md5sumまたは同じツールを使用して、sha256sum元のディレクトリとバックアップディレクトリにあるファイルのチェックサムを作成し、これらのチェックサムを比較して一致することを確認できます。すべてのファイルを再帰的に処理するには、find、xargs、および選択したチェックサムツールを組み合わせて実行できます。

    # Generate checksums for the original directory
    find /path/to/original -type f -exec sha256sum {} + > original_checksums.txt
    
    # Generate checksums for the backup directory
    find /path/to/backup -type f -exec sha256sum {} + > backup_checksums.txt
    
    # Compare the checksum files
    diff original_checksums.txt backup_checksums.txt
    

    コマンドに出力が表示されない場合は、diffすべてのファイルが完全に一致することを意味します。

  • チェックサムモードの再同期化rsyncこの-cオプションを実行すると、サイズと変更時間の代わりにファイルの内容(チェックサム)を強制的に比較します。これは、すべてのファイルが正しくコピーされ、同じであることを確認するより信頼性の高い方法です。

これらの方法は、ディスクに割り当てられているスペースではなくファイルの内容に焦点を当てて、バックアップの整合性をより正確に確認できます。

おすすめ記事