ブロックサイズを変更すると、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指定できます。MBGB

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

バラよりブロックサイズについてcoreutilsドキュメントの詳細をご覧ください。

関連情報