1K
私は合計が私が作業しているディレクトリ内のファイルが使用しているブロックの数を知らせていることを知っています。ある目的で、私はこれを人間が読める形式で表示するためにコマンドを入力し、ls -lh
ディレクトリ内のすべてのファイルのブロックサイズを見ましたが、驚くべきことに、ディレクトリ内のすべてのファイルのブロックサイズを追加したとき、彼らはtotal
何と同じではありませんでした。出力の最初の行に表示されます。だから私の質問は、この2つのサイズの違いの背後に隠れた理由は何ですか?
答え1
ls -l
有無にかかわらず、-h
ディスクスペース使用量ではなく、各ファイルの(見かけの)サイズのみが表示されます。
ディスク容量の使用量を表示するには、を使用しますls -s
。これで合計が一致するはずです。
この合計は、リストされたファイルの合計です。隠しファイルは、使用しない限り-A
含まれません。-a
、.
およびを使用する場合..
(通常)も含まれます。同じファイルがリストに2回表示される場合(たとえば、同じファイルへのハードリンクであるため)、そのファイルは2回カウントされます。
POSIX準拠の実装では、サイズは512バイト単位です。 GNU(Ubuntuに付属)は、環境に変数(またはこのオプションを使用して任意の単位を指定することもできます)がない場合は、1024バイト単位をls
使用します。 busyboxは常に1024バイト単位を使用します。POSIXLY_CORRECT
$LS_BLOCK_SIZE
$BLOCKSIZE
--block-size
ls
例:
$ truncate -s 15T a
$ echo > b
$ ls -s
total 4
0 a 4 b
$ ls -sl
total 4
0 -rw-rw-r-- 1 me me 16492674416640 Oct 4 21:53 a
4 -rw-rw-r-- 1 me me 1 Oct 4 21:53 b
$ POSIXLY_CORRECT=1 ls -sl
total 8
0 -rw-rw-r-- 1 me me 16492674416640 Oct 4 21:53 a
8 -rw-rw-r-- 1 me me 1 Oct 4 21:53 b
$ LS_BLOCK_SIZE=1 ls -sl
total 4096
0 -rw-rw-r-- 1 me me 16492674416640 Oct 4 21:53 a
4096 -rw-rw-r-- 1 me me 1 Oct 4 21:53 b
$ LS_BLOCK_SIZE=1 ls -sla
total 1638400
4096 drwxrwxr-x 2 me me 4096 Oct 4 21:53 ./
1630208 drwxr-xr-x 312 me me 1626112 Oct 4 21:54 ../
0 -rw-rw-r-- 1 me me 16492674416640 Oct 4 21:53 a
4096 -rw-rw-r-- 1 me me 1 Oct 4 21:53 b
$ ls -slah
total 1.6M
4.0K drwxrwxr-x 2 me me 4.0K Oct 4 21:53 ./
1.6M drwxr-xr-x 312 me me 1.6M Oct 4 21:55 ../
0 -rw-rw-r-- 1 me me 15T Oct 4 21:53 a
4.0K -rw-rw-r-- 1 me me 1 Oct 4 21:53 b
15TiBは大きいa
がディスク領域を占有せず(希少ファイル)、b
1バイトは大きいがディスクから4KiBを占有します(ファイルシステムブロックを1つ使用)。
バラよりディスク使用量を測定する方法はなぜそんなに変わりますか?さらなる読書のため。