Je n'arrive pas à comprendre pourquoi j'obtiens les résultats suivants:
ls -l
me dit que la taille d'un fichier donné (HISTORY) est "581944":
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
dit que c'est "572":
$ ls -s HISTORY
572 HISTORY
Je dois évidemment faire en sorte que les valeurs utilisent une échelle comparable. Je confirme donc d'abord que l'utilisation de --block-size 1
in ls -l
me donne le même résultat qu'auparavant:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Ensuite, je fais la même chose pour ls -s
obtenir une valeur de la même échelle:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Des résultats différents! 581944 ≠ 585728 .
J'ai essayé de générer des valeurs comparables dans l'autre sens, en utilisant -k
, mais je reçois:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Encore une fois, des résultats différents, 569 572 .
J'ai essayé de spécifier --si pour m'assurer que les deux options utilisaient la même échelle, mais en vain:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
... encore une fois, différentes valeurs: 582k 6 586k .
J'ai essayé de chercher sur le Web, mais la seule chose qui me semblait pertinente était la suivante :
Certains fichiers comportent des "trous", de sorte que l'utilisation indiquée par
ls -s
(...) est inférieure à la taille du fichier indiqué parls -l
. "
(Notez que dans mes résultats, l'inverse se produit: ls -s
renvoie des tailles plus grandes que ls -l
, pas plus petites.)
En attendant, cette page dit que
il n'y a pas de moyen élégant de détecter les trous de fichiers Unix.
Alors, comment puis-je traiter cette différence? Laquelle de ces valeurs peut être considérée comme correcte? Est-ce que cela pourrait être un bug ls
?
la source
ls -s
compte pas ça?sudo tune2fs -l /dev/sdaX|grep Inode
oudf -i
pour toutes les partitions.ls -lsh ~/Downloads/torrents
me donne, par exemple92K -rw-r--r-- 1 waldir waldir 350M Sep 15 2012 video.avi.part
,. Autrement dit, le 92K, retourné par l'option -s, est l'espace réel du fichier prend, système de fichiers sage et 350m, retourné par l'option -l, est la taille complète du fichier serait que si elle a été complètement téléchargé (c. -à- si tous les octets, du début à la fin, étaient non nuls). Voir lists.freebsd.org/pipermail/freebsd-questions/2012-June/…ls -s
vous indique la taille allouée du fichier, toujours un multiple de l'unité d'allocation.ls -l
indique la taille réelle. Un moyen facile de tester:la source