J'ai du mal à comprendre quelle est la bonne façon de lire la taille des fichiers car chaque commande vous donne des résultats variables. Je suis également tombé sur un article à http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html qui indique ce qui suit;
du vous donne la taille du fichier tel qu'il réside sur le système de fichiers. (IE vous donnera toujours un résultat divisible par 1024).
ls vous donnera la taille réelle du fichier.
Ce que vous regardez, c'est la différence entre la taille réelle du fichier et la quantité d'espace sur le disque qu'il faut. (également appelé efficacité du système de fichiers).
Quelle est la différence entre le fait qu'il réside sur le système de fichiers et la taille réelle du fichier
du
vous montre la sauged
isku
, il regarde l'espace occupé sur le lecteur actuel, et donc il vous montre la taille du résident.df -h
?df
signale le nombre de blocs restants * la taille du bloc du système de fichiers. Dans ce cas, ce serait plusdu
, car même les blocs partiellement utilisés sont considérés comme entièrement alloués.df
traduit essentiellement statvfs , vous pouvez donc consulter cet appel système pour avoir une meilleure idée de ce qui se passe.Il y a une autre option ici, qui n'a pas été couverte - les fichiers épars . Dans ce cas,
du
affiche une taille plus petite qu'un simplels -l
serait, parce quels
rapporte la « taille » du fichier comme étant la apparente taille (le nombre d'octets que vous pouvez lire, si vous vouliez beaucoup de zéros), alors que ladu
volonté continuer à utiliser le nombre réel de blocs de disques en cours d'utilisation.Astuce amusante: créez un grand nombre de gros fichiers clairsemés, puis impressionnez vos amis avec l'espace disque dont vous disposez ("regardez, je stocke des fichiers de 1 To pour soixante-dix milliards de gaz sur mon disque dur!"). OK, peut-être pas si amusant alors.
la source
Les systèmes de fichiers sont constitués de blocs. Les fichiers n'ont pas besoin de s'intégrer parfaitement dans les blocs. Si un fichier était de 1024 octets, sa taille en ls et du serait de 1024. Si la taille du fichier était de 1025, la taille serait de 1025 en ls et de 2048 en du.
Notez que l'exemple ci-dessus suppose une taille de bloc de 1024. De plus grandes tailles de bloc sont la norme de nos jours e, g,
la source
Il y a encore une autre raison pour laquelle ils peuvent être différents. du -h sait quand il voit le même fichier sous un autre nom (liens durs, par opposition aux liens symboliques) et signalera chaque fichier pour la taille qu'il est, mais n'ajoute la taille qu'une seule fois au répertoire parent commun.
la source