同じフォルダーのコピーが 3 つありますが、サイズが異なります。なぜでしょうか?
デスクトップのハード ドライブ上の暗号化された lvm から外部ドライブ上の暗号化された luks パーティションにコピーした「Documents」フォルダーがあります。次に、このフォルダーを外部ドライブからラップトップのハード ドライブ上の暗号化された lvm にコピーしました。
つまり、同じフォルダーのコピーが 3 つあります。
- デスクトップ
- 外付けドライブ
- ラップトップ
diff
デスクトップと外付けドライブを使用しましたが、違いはありません。
diff
ラップトップと外付けドライブ間で使用しましたが、違いはありません。
しかし、3 つのケースではフォルダーのサイズが異なります。
利用した
du -bs --apparent-size Documents
サイズを測定します。結果は次のとおりです。
- デスクトップ: 1735750760
- 外付けドライブ: 1735742568
- ラップトップ: 1735746664
そこで、サイズにわずかな違いがあることに気づきました。小さな違いですが、それでもあります。なぜそうなるのか疑問に思いました。説明はありますか?
答え1
異なるフォルダー間の違いは次のようになっていることにお気づきかもしれません。
Desktop: 1735750760
- 8192
External drive: 1735742568
+ 4096
Laptop: 1735746664
私の経験では、このような 4K ブロックの違いは、通常、ディレクトリ サイズの変更によって生じます。ディレクトリ自体のサイズ (ext ファイルシステムでは通常 4K の倍数) を比較すると、違いが見つかる場合があります。
(たとえば、コピー操作中にディレクトリが再構築され、削除されたエントリが消去されると、ディレクトリが小さくなることがあります)
サイズが異なるディレクトリを見つけるには、ディレクトリ同士を比較する必要があります。次のスクリプトがそれに役立ちます。
#!/bin/bash
DIR1="${1%/}/"
DIR2="${2%/}/"
diff \
<(find $DIR1 -type d -printf "%k %p\n" | sed -e "s|$DIR1||" | sort -k2) \
<(find $DIR2 -type d -printf "%k %p\n" | sed -e "s|$DIR2||" | sort -k2)
コードを新しいファイル (例: dircomp.sh) にコピーし、実行可能にしますchmod +x dircomp.sh
。次に、 のように呼び出します./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/
。
出力には、サイズの異なるディレクトリのみがリストされ、次のようになります。
< 4 Documents/Appartement/Bail
> 8 Documents/Appartement/Bail
ここで、 で始まる行は、<
最初のパラメータとして指定されたディレクトリ (例: /home/lemenhir/) にあるディレクトリをリストし、 で始まる行は、>
2 番目のパラメータとして指定されたディレクトリ (例: /media/lemenhir/ExternalDrive/) にあるディレクトリをリストします。
単一の行が表示される場合、そのディレクトリは反対のディレクトリに存在しません。
お役に立てれば。