コピー後のサイズが異なる

コピー後のサイズが異なる

数GBのデータと通常の設定ファイルを含むLinuxユーザーディレクトリをバックアップ用にコピーしたいのですがhome、ソースディレクトリとバックアップディレクトリは、同じ内容。OSはLubuntuです。

ディレクトリには隠しファイルとサブディレクトリが含まれています。グーグルで調べたところ、

cp -r /source-directory /backup-directory

適切なコマンドでした。

ソース ディレクトリのファイル システムは ext4 で、コピー先ディレクトリは NTFS です。コピー後、diff -qr /source-directory /backup-directory出力は何も返されません (したがって、違いはないと思われます)。ただしdu、、またはdu -b、またはdu --apparent-sizeall は、ソース ディレクトリとバックアップ ディレクトリに対して常に異なる出力を返します。

なぜですか? コマンドが間違っていたのでしょうか、それともこの使用法がdu間違っていたのでしょうか?

答え1

ファイルやサブディレクトリが追加されると、必要に応じて追加のブロックがディレクトリに割り当てられます。その後これらのファイルやサブディレクトリを削除しても、空になった/再利用可能な割り当ては破棄されません。したがって、コピー操作の宛先ディレクトリがソースよりもわずかに小さくなることはよくあります。

diff安心できる確認が必要な場合は、ソース ディレクトリと宛先ディレクトリを再帰的に実行して、すべてがコピーされたことを確認できます。

余談ですが、rsync構造を複製するのにも最適です。

rsync -avz /source-directory/ /backup-directory

ソース ディレクトリの末尾のスラッシュは、ソース ディレクトリ名がバックアップ ディレクトリの最初のサブディレクトリとして含まれていないことを意味します。

オプションは、転送プロセス中に圧縮を使用し、アクションを詳細に報告しながら、権限、所有権、シンボリック リンクなどを保持するためにアーカイブ モードでコピーするように-avz指示します。rsync

答え2

異なるファイルシステムでは、ファイルスペースを割り当てる際のオーバーヘッドが異なる場合があります。また、ディレクトリエントリの格納方法も異なる場合があります。残念ながら、出力はそれぞれ異なります。

関連情報