Linux에서 파일의 물리적 크기를 얻는 방법은 무엇입니까?

Linux에서 파일의 물리적 크기를 얻는 방법은 무엇입니까?

ls -l파일의 논리적 크기를 얻는 데 사용할 수 있지만 파일의 물리적 크기를 얻는 방법이 있습니까?

답변1

ls -l프로그램이 파일을 처음부터 끝까지 읽는 경우 읽을 바이트 수인 파일의 겉보기 크기를 제공합니다. du파일의 "디스크상의" 크기를 알려줍니다.

기본적으로 du파일 크기는 디스크 블록 단위로 제공되지만 이를 사용하여 -h사람이 읽을 수 있는 단위를 얻을 수 있습니다. 또한 du시스템의 설명서를 참조하십시오.

duGNU coreutil (아마도 Linux) 의 경우 -bgetbytes를 사용하면 이 --apparent-size옵션을 의미합니다. 이는 디스크에서 사용된 실제 바이트 수를 가져오는 데 사용하려는 방법이 아닙니다. 대신 --block-size=1또는 를 사용하세요 -B 1.

GNU를 사용하면 파일로 lsls -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

이는 이 파일이 512MB 파일이고 디스크에서 약 24KB의 공간을 차지한다는 것을 의미합니다. 이것은부족한파일(대부분의 0은 실제로 디스크에 기록되지 않지만 파일에서 논리적 "구멍"으로 표시됩니다). 가상 머신의 디스크 이미지나 스왑 파일 등과 같이 미리 할당된 대용량 파일을 처리할 때 스파스 파일이 일반적입니다. 희소 파일을 만드는 것은 빠르지만, 0으로 채우는 것은 느리고 불필요합니다.

fallocateLinux 시스템의 설명서도 참조하세요.

답변2

바이트 단위로 얻는 파일 크기는 다음과 같습니다.

actualsize=$(du -b "${file}" | cut -f 1)

관련 정보