同じフォルダの内容ですが、ドライブごとにサイズが異なるのはなぜですか?

同じフォルダの内容ですが、ドライブごとにサイズが異なるのはなぜですか?

同じフォルダのコピーが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/)。

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

お役に立てば幸いです。

関連情報