2つの同じツリー間で3GBの違いが発生するのはなぜですか?

2つの同じツリー間で3GBの違いが発生するのはなぜですか?

ちょうどディレクトリツリーをcp -a

まず、両方のディレクトリで検索を開始しましたが、結果は同じでした。

du -h を起動した後、あるディレクトリは 72 GB を提供し、もう一方のディレクトリは 75 GB を提供しました。コピープロセスが順調に進むと仮定すると、これらの違いが発生する原因は何ですか?ディスクブロックサイズは4096と同じです。一方のパーティションはEXT3で、もう一方のパーティションはEXT4です。可能ですか?

答え1

  1. はい、EXT4の調整方法によってディスク使用量が異なり、256バイトまたは128バイトのinodeがあり、ディレクトリが異なるように割り当てられ、小さなファイルが占めるスペースが異なる場合があります。しかし、3GBは多すぎるようです。

  2. 個人的に好むファイルシステムの比較方法は次のとおりです。

    ( cd /src/dir; find . -type f -print0 | xargs =0 cksum ) | sort >/tmp/src.cksum
    ( cd /dst/dir; find . -type f -print0 | xargs -0 cksum ) | sort >/tmp/dst.cksum
    cksum /tmp/*.cksum
    

両方のファイル階層のファイル名とチェックサムが同じであれば、かなり確信しています。diff比較がなく、すべてに対する直接的なハッシュだけがあるため、これよりも高速です。

ssh上記の方法の利点は、他のマシンでも簡単に実行できることです。

答え2

おそらくcp -aちょっとしたでしょう。足りないファイルコピーの魔法 - またはオリジナルとコピーのどちらが大きいかを言っていない魔法を実行できませんでしたか?

マンページには次のように記載されていますcp

デフォルトでは、スパースソースファイルはおおよそのヒューリスティックによって検出され、対応するターゲットファイルもスパースされます。これは--sparse = autoによって選択された動作です。

du -Sディレクトリを比較して実際にサイズの異なるファイルを取得するには、2つのファイルの出力を比較してみます。

diff <(cd orig; du -S . | sort -n) <(cd copy; du -S . | sort -n)

関連情報