ブロック サイズを変更すると、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

代わりに、 、KBなどを指定して 10 の累乗を使用することもできます。MBGB

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

見るブロックサイズに関するセクションcoreutils詳細についてはドキュメントを参照してください。

関連情報