Não consigo entender por que estou obtendo os seguintes resultados:
ls -l
diz-me que o tamanho de um determinado arquivo (HISTORY) é "581944":
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
diz que é "572":
$ ls -s HISTORY
572 HISTORY
Obviamente, preciso fazer com que os valores usem uma escala comparável. Primeiro, confirmo que o uso de --block-size 1
in ls -l
me dá o mesmo resultado de antes:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Então faço o mesmo para ls -s
obter um valor na mesma escala:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Resultados diferentes! 581944 ≠ 585728 .
Tentei gerar valores comparáveis ao contrário, usando -k
, mas obtive:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Novamente, resultados diferentes, 569 × 572 .
Tentei especificar --si para garantir que ambas as opções usassem a mesma escala, sem sucesso:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... novamente, valores diferentes: 582k ≠ 586k .
Tentei pesquisar na web, mas a única coisa que pude achar relevante era o seguinte :
Alguns arquivos têm "brechas" neles, de modo que o uso listado por
ls -s
(...) é menor que o tamanho do arquivo listado porls -l
".
(observe que, em meus resultados, acontece o oposto: ls -s
retorna tamanhos maiores que ls -l
, não menores.)
Enquanto isso, esta página diz que
não há uma maneira elegante de detectar falhas no arquivo Unix.
Então, como posso lidar com essa discrepância? Quais desses valores podem ser considerados corretos? Isso poderia ser um bug ls
?
ls -s
conta isso?