du -h
을 반환 하는 일부 파일이 있는데 512
, 단위와 함께 숫자를 반환해야 한다는 것을 이해하고 있습니다. 무슨 뜻이에요 ? 실제로 사용되고 있는 디스크 공간은 얼마나 됩니까?
좋은 파일
(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0958
36K 2020.110/drr0/X1.0060_0958
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0958
-rw-rw-rw- 1 user11 users 36628 Jul 29 18:43 2020.110/drr0/X1.0060_0958
잘못된 파일
(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0957
512 2020.110/drr0/X1.0060_0957
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0957
-rw-rw-rw- 1 user11 users 0 Jul 29 18:51 2020.110/drr0/X1.0060_0957
답변1
du는 단위를 표시하지 않습니다. 그것을주의해라두 경우 모두출력에 'B'(바이트용)가 없습니다. "사람이 읽을 수 있는" 모드에서는승수 접두사(K, M, G) 단위 자체는 아닙니다. 그리고 1024 이하의 숫자에는 접두사가 없으므로 아무 것도 표시되지 않습니다.
일반적으로 'du'는 블록 단위로 파일을 측정하지만(매뉴얼 페이지 참조) '-h' 옵션을 사용하면 단위는 항상 1바이트입니다. 따라서 du -h
show 512
이면 512바이트입니다.
왜 0이 아니고 512인가요? puclv의 답변 보기
답변2
파일이 항상 디스크 공간을 소비하는 것은 아닙니다. 실제 크기보다 데이터 블록 수가 적은 파일은 더 적은 수의 블록으로 보고됩니다.
- 스파스 파일디스크에는 0이 아닌 블록만 저장됩니다. 따라서 0이 아닌 데이터가 5MB만 포함된 50TB 스파스 파일은 디스크에서 ~5MB만 소비합니다.
- 인라인 파일또한 메타데이터 자체에 바로 저장되므로 데이터 영역에서 0바이트를 소비합니다. NTFS에서는상주 파일그리고 나중에는 ext4와 같은 다른 많은 Linux 파일 시스템이나BTRFS비슷한 기능도 지원합니다
- 압축 파일또한 압축 후 블록 수가 더 적습니다.
아마도 파일이 인라인되었을 것입니다. 할당된 블록이 없으므로 에서 보고하는 숫자는 ls
0이 됩니다. 로 쉽게 확인할 수 있습니다 stat
. ext4에서는 inode 크기(256+ 바이트)에 비해 매우 작은 파일만 인라인될 수 있으므로 아마도 NTFS 또는 Btrfs와 같은 다른 파일 시스템을 사용하고 있을 것입니다.
옵션 을 이용 --apparent-size
하시면 du
실제 크기를 보실 수 있습니다.
--apparent-size
디스크 사용량이 아닌 겉보기 크기를 인쇄합니다. 겉보기 크기는 일반적으로 더 작지만 ('희소') 파일의 구멍, 내부 조각화, 간접 블록 등으로 인해 더 커질 수 있습니다.