Comment obtenir la taille d’un fichier ou d’un répertoire sous Linux



Distinction entre l’espace disque utilisé et la taille d’un fichier sous Linux

Lorsque vous employez la commande du sous Linux, vous obtenez deux types d’informations : l’espace disque réellement occupé et la taille effective d’un fichier ou répertoire. Il est crucial de comprendre pourquoi ces deux valeurs diffèrent.

Comprendre l’allocation de l’espace disque

La taille qu’un fichier affiche et l’espace qu’il mobilise sur votre disque dur sont souvent distincts. L’espace de stockage est divisé en blocs. Ainsi, si un fichier est plus petit qu’un bloc, un bloc complet lui est attribué. Le système de fichiers ne gère pas de plus petites unités d’allocation.

Sauf si la taille du fichier correspond exactement à un multiple de blocs, l’espace qu’il occupe sur le disque est systématiquement arrondi au bloc entier supérieur. Par exemple, si un fichier dépasse la taille de deux blocs mais reste inférieur à trois, il nécessitera l’allocation de trois blocs pour son stockage.

Deux mesures sont donc à considérer : la taille intrinsèque du fichier (le nombre d’octets de données) et l’espace réel qu’il monopolise sur le disque (le nombre de blocs utilisés).

Exemple concret : Analyse d’un petit fichier

Prenons un exemple simple. Nous allons créer un fichier minuscule en redirigeant un seul caractère dans un fichier nommé geek.txt :

echo "1" > geek.txt

Maintenant, examinons la taille du fichier en utilisant la commande ls avec l’option -l pour un formatage long :

ls -l geek.txt

La taille affichée est de deux octets, ce qui correspond à la valeur numérique qui suit les identifiants utilisateur et groupe. Comment expliquer ces deux octets alors que nous n’avons inséré qu’un seul caractère? Pour cela, il faut analyser le contenu réel du fichier.

Utilisons la commande hexdump, qui permet d’obtenir le nombre exact d’octets et de visualiser les caractères non imprimables sous forme de valeurs hexadécimales. L’option -C (canonique) force l’affichage des valeurs hexadécimales.