Почему 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

Значения показаны с использованием степеней 2, а не степеней 10; так, 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

Вместо этого можно указать KB, MBи GBт.д., чтобы использовать степени числа 10:

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

Видетьраздел о размерах блоковcoreutilsПодробности смотрите в документации.

Связанный контент