블록 크기를 변경할 때 ls가 파일 크기를 다르게 표시하는 이유는 무엇입니까?

블록 크기를 변경할 때 ls가 파일 크기를 다르게 표시하는 이유는 무엇입니까?

파일 시스템 백업 크기를 확인하고 싶었습니다.

ls -lia backup.tgz 
17 -rw-r--r-- 1 root root 84972633333 мај 28 10:05 backup.tgz

블록 크기 M

 ls -l --block-size=M backup.tgz 
-rw-r--r-- 1 root root 81037M мај 28 10:05 backup.tgz

마지막으로 블록 크기 G

ls -l --block-size=G backup.tgz 
-rw-r--r-- 1 root root 80G мај 28 10:05 backup.tgz

누군가 그렇게 큰 차이를 설명할 수 있을까요?

답변1

값은 10의 거듭제곱이 아닌 2의 거듭제곱을 사용하여 표시됩니다. 따라서 1M은 1,048,576바이트이고 1G는 1,073,741,824바이트입니다.

그에 따라 나누면 값이 ls출력과 일치합니다(반올림).

$ echo $((84972633333.0/1024/1024))
81036.218007087708

$ echo $((84972633333.0/1024/1024/1024))
79.136931647546589

10의 거듭제곱을 사용하는 대신 , 등을 KB지정할 MB수 있습니다 .GB

ls -l --block-size=MB backup.tgz

보다블록 크기 섹션자세한 내용은 설명서를 참조하세요 coreutils.

관련 정보