ls -l파일의 논리적 크기를 얻는 데 사용할 수 있지만 파일의 물리적 크기를 얻는 방법이 있습니까?
ls -l파일의 논리적 크기를 얻는 데 사용할 수 있지만 파일의 물리적 크기를 얻는 방법이 있습니까?
답변:
ls -l파일의 명백한 크기를 제공합니다. 이것은 파일이 처음부터 끝까지 읽은 경우 프로그램이 읽을 바이트 수입니다. du"디스크상의"파일의 크기를 알려줍니다.
기본적 du으로 디스크 블록 수로 파일 크기를 제공하지만 -h사람이 읽을 수있는 단위를 대신 사용할 수 있습니다 . du시스템 설명서를 참조하십시오 .
GNU coreutil 's du(아마 Linux -b에있을 수 있음 ) 를 사용하면 바이트를 얻는 것이 --apparent-size옵션을 의미합니다 . 이것은 실제로 디스크에서 사용되는 바이트 수를 얻는 데 사용하려는 것이 아닙니다. 대신 --block-size=1또는을 사용하십시오 -B 1.
GNU를 사용 하면 파일 ls을 사용할 수도 ls -s --block-size=1있습니다. 이것은 du -B 1파일 과 같은 번호를 줄 것 입니다.
예:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
이는 파일 크기가 디스크에서 약 24KB 인 512MB 파일임을 의미합니다. 그것은이다 스파 스 파일 (실제로는 파일의 논리적 "구멍"으로 디스크에 기록하지만, 표현하지 않는 대부분 제로). 가상 시스템이나 스왑 파일 등의 디스크 이미지와 같이 미리 할당 된 대용량 파일을 작업 할 때는 스파 스 파일이 일반적입니다. 스파 스 파일을 생성하는 것은 빠르며 0으로 채우는 속도는 느리고 불필요합니다.
fallocateLinux 시스템 의 설명서를 참조하십시오 .
du , 실제로 읽을 수있는 데이터의 양을 보여줄 것 동안 ls쇼 디스크 섹터가 할당되어있는 정도.
du실제로 파일에서 사용중인 디스크의 양을 보여줍니다. 반면에 표시된 겉보기 크기 (논리적 크기) ls는 프로그램이 읽을 수있는 바이트 수입니다. 파일이 희소 한 경우 일부 읽기 바이트는 0이지만 디스크에서가 아니라 파일을 읽는 프로그램으로 계속 전달됩니다.