어떤 상황 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
답변
스파 스 파일이 있으면 발생합니다.
$ 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
.
답변
출력에 의해 주어진 있습니다 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 (내 리눅스 상자에서) 청크로 할당하기 때문입니다. 이를 IO 블록이라고합니다. 다음을 통해이를 확인할 수 있습니다.
stat aaa
File: `aaa'
Size: 1024 Blocks: 8 IO Block: 4096 regular file
답변
허용 된 답변은 절대적으로 정확합니다. 겉보기 크기를 보려면 다음을 사용할 수 있습니다.
du --apparent-size
디스크 사용이 아닌 겉보기 크기를 인쇄합니다. 겉보기 크기는 일반적으로 더 작지만 ( ‘스파 스’) 파일의 구멍, 내부 조각화, 간접 블록 등으로 인해 더 클 수 있습니다.