web-dev-qa-db-ja.com

ディレクトリ内のデータが同一で​​ある場合、2つのディレクトリのサイズが異なるのはなぜですか?それらは同一のext4パーティションとディスクです

root@phoenix:~# ls -ld /backups/external?/var/subsonic/thumbs/110
drwxr-xr-x 2 root root 73728 Mar  4 15:35 /backups/external3/var/subsonic/thumbs/110
drwxr-xr-x 2 root root 69632 Mar  4 15:35 /backups/external4/var/subsonic/thumbs/110

上記のディレクトリの内容は同じです。ディスクとファイルシステムの構成は同じです。ただし、ディレクトリのサイズ自分自身は異なります。

はい、問題のディレクトリの内容は同じです。diff-r、rsync -avx、および比較を超えて確認しました。 diff-rの出力は次のとおりです。

root@phoenix:~# diff -r /backups/external{3,4}/var/subsonic/thumbs/110
root@phoenix:~# 

du -bs出力:

root@phoenix:~# du -bs /backups/external?/var/subsonic/thumbs/110
4116125 /backups/external3/var/subsonic/thumbs/110
4112029 /backups/external4/var/subsonic/thumbs/110

du -b --total output count 各ディレクトリ内のファイルのみ

root@phoenix:~# du -b --total /backups/external3/var/subsonic/thumbs/110/* | tail -1 
4042397 total
root@phoenix:~# du -b --total /backups/external4/var/subsonic/thumbs/110/* | tail -1 
4042397 total

したがって、external3の場合:

4042397 + 73728 = 4116125

およびexternal4の場合:

4042397 + 69632 = 4112029

ディレクトリ自体のサイズに追加されたファイルのサイズは、du-bsからの出力と一致します。

8
cb303

ls -lによって報告されたディレクトリのサイズは、そのディレクトリに保存されているファイルの累積サイズとは関係ありません。

ほとんどの一般的なファイルシステムでは、ディレクトリエントリを格納するために必要なのはバイト単位のサイズです。このサイズはブロックサイズごとに大きくなります(例:4096、8192など)。ブロックに保存できるエントリの数はファイルシステムによって異なり、エントリのファイル名の長さによっても異なります。

ディレクトリエントリが削除されても、断片化を減らすためにディレクトリサイズは影響を受けません。

あなたの例では、external3ディレクトリには18 * 4096ブロックが割り当てられ、external4には17 * 4096ブロックが割り当てられています。

つまり、ディレクトリの内容が現在同じである場合でも、前者はもう一度ファイル(またはより長い名前のファイル)を保存します。大きな問題ではない。

8
jlliagre