1K
나는 총계가 내가 작업 중인 디렉토리의 파일이 사용하는 블록 수를 알려준다는 것을 알고 있습니다 . 어떤 목적으로 나는 이것을 사람이 읽을 수 있는 형식으로 보기 위해 명령을 입력했고 ls -lh
디렉토리에 있는 모든 파일의 블록 크기를 보았지만 놀랍게도 디렉토리에 있는 모든 파일의 블록 크기를 추가했을 때 그들은 total
무엇 과 같지 않았습니다. 출력의 첫 번째 줄에 표시됩니다. 그래서 내 질문은, 이 두 크기의 차이 뒤에 숨은 이유는 무엇입니까?
답변1
ls -l
유무에 관계없이 -h
디스크 공간 사용량이 아닌 각 파일의 (겉보기) 크기만 표시됩니다.
디스크 공간 사용량을 보려면 를 사용하십시오 ls -s
. 그러면 합계가 일치해야 합니다.
이 합계는 나열된 파일의 합계입니다. 숨겨진 파일은 사용하지 않는 한 -A
포함되지 않습니다 . -a
, .
및 를 사용하는 경우 ..
(보통)도 포함됩니다. 동일한 파일이 목록에 두 번 나타나는 경우(예를 들어 동일한 파일에 대한 하드 링크이기 때문에) 해당 파일은 두 번 계산됩니다.
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를 차지합니다(파일 시스템 블록 하나 사용).
바라보다디스크 사용량을 측정하는 방법이 왜 그렇게 다양합니까?추가 읽기를 위해.