어떤 상황에서 ls -lh
표시된 총계가 개별 파일의 합보다 적습니까? 예를 들어:
$ ls -lh /var/lib/nova/instances/_base
total 100G
-rw-rw-r-- 1 nova nova 4.3M 2012-02-14 14:07 00000001
-rw-rw-r-- 1 nova nova 5.7M 2012-02-14 14:07 00000002
-rw-rw-r-- 1 nova nova 42G 2012-03-08 15:24 1574bddb75c78a6fd2251d61e2993b5146201319.part
-rw-rw-r-- 1 libvirt-qemu kvm 24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
-rw-r--r-- 1 libvirt-qemu kvm 65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
-rw-rw-r-- 1 libvirt-qemu kvm 160G 2012-02-24 16:06 ephemeral_0_160_None
-rw-rw-r-- 1 libvirt-qemu kvm 80G 2012-02-24 22:38 ephemeral_0_80_None
-rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
-rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm
편집: 이제 주석에 각 요청에 대한 몇 가지 추가 플래그가 표시됩니다.
$ ls -aiFlh /var/lib/nova/instances/_base/
total 143G
29884440 drwxrwxr-x 2 nova nova 4.0K 2012-03-08 15:45 ./
29884427 drwxr-xr-x 6 nova nova 4.0K 2012-03-08 15:05 ../
29884444 -rw-rw-r-- 1 nova nova 4.3M 2012-02-14 14:07 00000001
29884445 -rw-rw-r-- 1 nova nova 5.7M 2012-02-14 14:07 00000002
29884468 -rw-r--r-- 1 nova nova 65G 2012-03-08 15:59 1574bddb75c78a6fd2251d61e2993b5146201319.converted
29884466 -rw-rw-r-- 1 nova nova 58G 2012-03-08 15:35 1574bddb75c78a6fd2251d61e2993b5146201319.part
29884446 -rw-rw-r-- 1 libvirt-qemu kvm 24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
29884467 -rw-r--r-- 1 libvirt-qemu kvm 65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
29884443 -rw-rw-r-- 1 libvirt-qemu kvm 160G 2012-02-24 16:06 ephemeral_0_160_None
29884442 -rw-rw-r-- 1 libvirt-qemu kvm 80G 2012-02-24 22:38 ephemeral_0_80_None
29884447 -rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
29884441 -rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm
답변1
희박한 파일이 있는 경우 이런 일이 발생합니다.
$ mkdir test; cd test
$ truncate -s 1000000000 file-with-zeroes
$ ls -l
total 0
-rw-r--r-- 1 gim gim 1000000000 03-08 22:18 file-with-zeroes
스파스 파일은 파일 시스템 블록이 채워지지 않은(또는 부분적으로만 채워진) 파일입니다. 희소 파일의 채워지지 않은 영역을 읽으면 0이 표시됩니다. 이러한 공백에는 실제 디스크 공간이 필요하지 않으며 보고된 "총계"는 ls
파일이 차지하는 디스크 공간에 해당합니다( 에서와 같이 du
).
답변2
ls -l
주어진 출력과 du
미묘하지만 매우 중요한 차이가 있다는 점에 유의하십시오. 이 시도:
dd if=/dev/urandom of=aaa bs=1024 count=1
지금
ls -l aaa
-rw-r--r-- 1 abc abc 1024 2012-03-08 15:45 aaa
하지만
du -h aaa
4.0K aaa
이는 파일 시스템이 4096 블록(내 Linux 시스템에서)으로 할당되기 때문입니다. IO 블록이라고 합니다. 다음을 통해 이를 확인할 수 있습니다.
stat aaa
File: `aaa'
Size: 1024 Blocks: 8 IO Block: 4096 regular file
답변3
현재 승인된 답변당신이 사용할 수 있는 겉보기 크기를 보고 싶다면 다음과 같이 절대적으로 정확합니다.
du --apparent-size
디스크 사용량이 아닌 겉보기 크기를 인쇄합니다. 겉보기 크기는 일반적으로 작지만, 파일의 구멍("희소"), 내부 조각화, 간접 블록 등으로 인해 더 커질 수 있습니다.