Travailler avec les répertoires et les systèmes de fichiers
Dans cette étape, nous allons explorer comment utiliser la commande stat avec les répertoires et les systèmes de fichiers. Cette connaissance est précieuse pour les tâches d'administration système et la compréhension de l'utilisation du stockage.
Commande Stat avec les répertoires
La commande stat fonctionne avec les répertoires de la même manière qu'avec les fichiers. Créons un répertoire de test et examinons ses métadonnées :
mkdir -p ~/project/test_dir
stat ~/project/test_dir
Vous devriez voir une sortie similaire à ce que nous avons vu pour les fichiers, mais avec "directory" (répertoire) au lieu de "regular file" (fichier régulier) dans le champ du type de fichier.
La principale différence entre les fichiers et les répertoires est que les répertoires ont généralement plus de liens (un pour chaque sous-répertoire immédiat plus deux pour le répertoire lui-même et son parent).
Créons un sous-répertoire et voyons comment cela affecte le nombre de liens :
mkdir -p ~/project/test_dir/sub_dir
stat ~/project/test_dir
Vous devriez remarquer que le nombre de liens a augmenté de 1.
La commande stat peut également fournir des informations sur les systèmes de fichiers en utilisant l'option -f ou --file-system. Cette option affiche des détails tels que le type de système de fichiers, la taille des blocs et les statistiques d'utilisation.
Examinons le système de fichiers qui contient notre répertoire de projet :
stat -f ~/project
La sortie devrait inclure :
- Type de système de fichiers
- Taille des blocs
- Nombre total de blocs
- Blocs libres
- Blocs disponibles (pour les utilisateurs non root)
- Nombre total d'inodes
- Inodes libres
Ces informations sont utiles pour surveiller l'utilisation de l'espace disque et planifier la capacité.
Combinaison d'options
Nous pouvons combiner l'option du système de fichiers avec l'option de format personnalisé pour extraire des informations spécifiques :
stat -f -c 'File System: %T\nTotal size: %b blocks\nFree: %f blocks\nAvailable: %a blocks' ~/project
Cette commande affiche le type de système de fichiers, le nombre total de blocs, les blocs libres et les blocs disponibles.
Suivi des liens symboliques
Par défaut, lorsque la commande stat rencontre un lien symbolique, elle affiche des informations sur le lien lui-même, et non sur le fichier vers lequel il pointe. Créons un lien symbolique et voyons cela en action :
echo "Target file content" > ~/project/target_file.txt
ln -s ~/project/target_file.txt ~/project/symlink.txt
stat ~/project/symlink.txt
La sortie devrait montrer que le type de fichier est "symbolic link" (lien symbolique) et que la taille est la longueur du chemin vers le fichier cible.
Pour voir les informations sur le fichier cible au lieu du lien, utilisez l'option -L ou --dereference :
stat -L ~/project/symlink.txt
Maintenant, la sortie devrait afficher des informations sur le fichier cible, y compris sa taille et son type en tant que "regular file" (fichier régulier).
Application pratique : Recherche de grands répertoires
Une application pratique de la commande stat est de trouver de grands répertoires. Créons un script qui calcule la taille des répertoires :
echo '#!/bin/bash
for dir in "$@"; do
if [ -d "$dir" ]; then
size=$(du -s "$dir" | cut -f1)
echo "Directory: $dir, Size: $size KB"
else
echo "$dir is not a directory"
fi
done' > ~/project/dir_size.sh
chmod +x ~/project/dir_size.sh
Maintenant, exécutons le script sur notre répertoire de test :
~/project/dir_size.sh ~/project/test_dir
Ce script utilise la commande du pour calculer la taille des répertoires, complétant les informations de métadonnées fournies par la commande stat.
En comprenant comment utiliser la commande stat avec les répertoires et les systèmes de fichiers, vous pouvez obtenir des informations précieuses sur l'organisation et l'utilisation du stockage de votre système Linux.