私は何年も私を悩ませてきた最も謎のような質問があります。 ls -lとdu -sh *で指定されたファイルサイズの違いは何ですか?
GRILL:/user/MAIL/DATA>ll
total 270
drwxr-xr-x 11 user users 1024 Mar 21 2013 .
drwxr-xr-x 6 user users 96 May 28 2008 ..
drwxr-xr-x 10 user users 1024 Jun 14 09:40 Rod
drwxr-xr-x 3 user users 96 Sep 17 2010 Atlas
drwxr-xr-x 2339 user users 132096 Jun 14 15:00 Admin
drwxr-xr-x 3 user users 96 Jul 11 2014 DE
drwxr-xr-x 5 user users 96 Jun 14 08:30 Express
drwxr-xr-x 3 user users 96 Sep 17 2010 Deferred
drwxr-xr-x 2 user users 96 Feb 10 2009 Imagi
drwxr-xr-x 6 user users 1024 Jul 11 2014 NO
drwxr-xr-x 3 user users 2048 Mar 21 2013 SE
-rw-r--r-- 1 user users 55 Mar 21 2013 cmd
GRILL:/user/MAIL/DATA>du -sk *
6723 Rod
0 Atlas
435494 Admin
2 DE
111273 Express
2 Deferred
0 Imagi
541 NO
12 SE
1 cmd
Adminのサイズls -l
はです132096
。 Adminディレクトリから400,000を超えるファイルを削除しようとしましたが、スペースが少し減ったことがわかりませんでした。
そしてdu -sk
与えられたサイズは435494
。ファイルの元のサイズは何であり、その違いは何ですか?誰かがこれについて詳しく説明してもらえますか?
答え1
ファイルの場合、何よりもls -l file
サイズをバイト単位で表示し、ディスクが占めるスペースを1kB = 1024バイト単位で表示します。ディスク容量はブロック単位で割り当てられているため、表示サイズは常に表示スペースよりわずかに大きい(1kB単位と同じ)。file
du -k file
file
du -k
ls -kl
ls -l
ディレクトリの場合のls -ld dir
ファイルとサブディレクトリのファイル名のリスト(および多くの属性)のサイズを表示しますdir
。これはファイル名のリストにすぎず、ファイルやサブディレクトリの内容ではありません。したがって、ファイルを追加するとサイズが大きくなりますdir
が(ファイルが空であっても)、ファイルの1つが大きくなるとサイズは変わりませんdir
。
dir
ただし、リスト内のスペースからファイルを削除するとすぐに回収されませんが、削除されたファイルのエントリは未使用とマークされてから回収されます(実際には実装によって異なりますが、私が説明したものとほぼ同じです)。これがls -ld
ファイルを削除すると、はるかに後で出力に変更が表示されない可能性がある理由です。
最後に、ディスク上のすべてのファイルとすべてのサブディレクトリ(予想)が占める表示スペースはdu -ks dir
1kB = 1024バイトです。上記の説明を考慮すると、これは出力とは関係ありません。dir
dir
ls -kld dir
答え2
ls -l
レベル1のファイルサイズのみが表示されます。
du
フォルダサイズ(フォルダの下のファイルサイズの合計)が繰り返し表示されます。