web-dev-qa-db-ja.com

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

同じフォルダのコピーが3つありますが、サイズが異なります。どうして?

デスクトップのハードドライブ上の暗号化されたlvmから外部ドライブ上の暗号化されたluksパーティションにコピーした「Documents」フォルダーがあります。次に、このフォルダーを外付けドライブからラップトップのハードドライブ上の暗号化されたlvmにコピーしました。

したがって、同じフォルダのコピーが3つあります。

  • デスクトップ
  • 外付けドライブ
  • ラップトップ

デスクトップと外付けドライブの間でdiffを使用しました->違いはありません。

私はラップトップと外付けドライブの間でdiffを使用しました->違いはありません。

しかし、私は3つのケースで異なるフォルダーサイズを持っています。

利用した

du -bs --apparent-size Documents

サイズを測定します。結果は次のとおりです。

  • デスクトップ:1735750760
  • 外付けドライブ:1735742568
  • ラップトップ:1735746664

そのため、サイズにわずかな違いがあることがわかります。小さな違いですが、まだあります。なぜそうなのかと思っていました。説明はありますか?

1
le menhir

異なるフォルダの違いは次のとおりです。

    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 /)。

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

お役に立てれば。

3
bey0nd