フォルダーの内容は同じですが、ドライブによってサイズが異なります。なぜでしょうか?

フォルダーの内容は同じですが、ドライブによってサイズが異なります。なぜでしょうか?

同じフォルダーのコピーが 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/) にあるディレクトリをリストします。

単一の行が表示される場合、そのディレクトリは反対のディレクトリに存在しません。

お役に立てれば。

関連情報