Por que ls show file size é diferente ao alterar o tamanho do bloco?

Por que ls show file size é diferente ao alterar o tamanho do bloco?

Eu queria verificar o tamanho do backup do meu sistema de arquivos

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

Com bloco tamanho M

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

Finalmente com tamanho de bloco G

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

Alguém poderia explicar uma diferença tão grande?

Responder1

Os valores são mostrados usando potências de 2 e não potências de 10; então 1M equivale a 1.048.576 bytes e 1G equivale a 1.073.741.824 bytes.

Se você dividir adequadamente, os valores corresponderão à lssaída (arredondado):

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

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

Você pode especificar KB, MB, GBetc. em vez de usar potências de 10:

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

Vera seção sobre tamanhos de blocona coreutilsdocumentação para obter detalhes.

informação relacionada