Introduction
Dans le système d'exploitation Linux, les fichiers et les répertoires contiennent des métadonnées importantes au-delà de leur simple contenu. Ces métadonnées incluent des informations telles que les permissions des fichiers, la propriété, la taille et divers horodatages. La commande Linux stat offre un moyen puissant de récupérer et d'afficher ces informations détaillées sur les fichiers et les répertoires.
Dans ce lab, vous apprendrez à utiliser la commande stat pour examiner les métadonnées des fichiers, comprendre les différents types d'horodatages et personnaliser le format de sortie pour extraire des informations spécifiques. Ces compétences sont essentielles pour l'administration système, le dépannage des problèmes de permissions de fichiers et la surveillance des modifications de fichiers.
Utilisation de base de la commande Stat
La commande stat dans Linux fournit des informations complètes sur les fichiers et les répertoires. Dans cette étape, nous allons apprendre à utiliser la forme de base de la commande stat et à comprendre sa sortie.
Comprendre la commande Stat
La commande stat révèle des informations de métadonnées qui ne sont généralement pas visibles avec des commandes régulières comme ls. Ces métadonnées incluent :
- La taille du fichier et l'allocation des blocs
- Les informations de l'inode
- Les permissions d'accès
- La propriété de l'utilisateur et du groupe
- Divers horodatages
- Le type de fichier
Création d'un fichier de test
Commençons par créer un simple fichier texte que nous pourrons utiliser tout au long de ce lab :
echo "This is a test file for the stat command." > ~/project/testfile.txt
Exécutez la commande ci-dessus dans votre terminal. Cela créera un fichier nommé testfile.txt dans le répertoire du projet avec une seule ligne de texte.
Utilisation de la commande Stat de base
Maintenant, examinons les métadonnées du fichier que nous venons de créer en utilisant la commande stat :
stat ~/project/testfile.txt
Vous devriez voir une sortie similaire à la suivante :
File: /home/labex/project/testfile.txt
Size: 41 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 12345678 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ labex) Gid: ( 1000/ labex)
Access: 2023-04-28 10:30:00.000000000 +0000
Modify: 2023-04-28 10:30:00.000000000 +0000
Change: 2023-04-28 10:30:00.000000000 +0000
Birth: -
Comprendre la sortie
Décomposons les éléments clés de cette sortie :
- File (Fichier) : Le chemin complet du fichier
- Size (Taille) : La taille du fichier en octets
- Blocks (Blocs) : Nombre de blocs alloués
- IO Block (Bloc d'E/S) : La taille du bloc pour les E/S du système de fichiers
- Device (Périphérique) : L'ID du périphérique en hexadécimal/décimal
- Inode (Inode) : Le numéro d'inode (un identifiant unique pour le fichier)
- Links (Liens) : Nombre de liens physiques
- Access (Accès) : Permissions du fichier en format numérique (octal) et symbolique
- Uid/Gid : ID de l'utilisateur et ID du groupe du propriétaire du fichier
- Access/Modify/Change/Birth : Différents horodatages liés au fichier
Les horodatages sont particulièrement importants :
- Access (Accès) : Quand le fichier a été lu pour la dernière fois
- Modify (Modification) : Quand le contenu du fichier a été modifié pour la dernière fois
- Change (Changement) : Quand les métadonnées du fichier ont été modifiées pour la dernière fois
- Birth (Création) : Heure de création (non disponible sur tous les systèmes de fichiers)
Vous avez maintenant appris à afficher et à interpréter les métadonnées de base des fichiers en utilisant la commande stat.
Exploration des horodatages et des permissions des fichiers
Dans cette étape, nous allons explorer les horodatages des fichiers plus en détail et apprendre à modifier les permissions des fichiers. Comprendre ces aspects des métadonnées des fichiers est crucial pour la gestion et la sécurité des fichiers.
Comprendre les horodatages des fichiers
Comme nous l'avons vu à l'étape précédente, Linux maintient plusieurs horodatages pour chaque fichier :
- Access time (atime) (Heure d'accès) : Mis à jour lorsqu'un fichier est lu
- Modification time (mtime) (Heure de modification) : Mis à jour lorsque le contenu d'un fichier change
- Change time (ctime) (Heure de changement) : Mis à jour lorsque les métadonnées d'un fichier (permissions, propriété) changent
- Birth time (btime) (Heure de création) : Enregistre le moment où le fichier a été créé (non disponible sur tous les systèmes de fichiers)
Démontrons comment ces horodatages changent :
- Tout d'abord, vérifiez les horodatages actuels de notre fichier de test :
stat ~/project/testfile.txt
- Maintenant, modifions le contenu du fichier :
echo "Adding a new line to change the modification time." >> ~/project/testfile.txt
- Vérifiez à nouveau les horodatages :
stat ~/project/testfile.txt
Vous devriez remarquer que l'heure de modification (Modify) et l'heure de changement (Change) ont été mises à jour, car nous avons modifié le contenu du fichier.
Travailler avec les permissions des fichiers
Les permissions des fichiers déterminent qui peut lire, écrire ou exécuter un fichier. La commande stat affiche les permissions en format symbolique (-rw-r--r--) et en format numérique (0644).
Explorons comment afficher et modifier les permissions :
- Tout d'abord, vérifiez les permissions actuelles de notre fichier de test :
stat -c '%A %a %n' ~/project/testfile.txt
Cette commande utilise l'option -c pour afficher un format personnalisé :
%Aaffiche les permissions en format symbolique%aaffiche les permissions en format octal (numérique)%naffiche le nom du fichier
La sortie devrait ressembler à ceci :
-rw-r--r-- 644 /home/labex/project/testfile.txt
- Maintenant, modifions les permissions :
chmod 755 ~/project/testfile.txt
Cette commande modifie les permissions en 755, ce qui signifie :
- Le propriétaire a les permissions de lecture, d'écriture et d'exécution (7 = 4+2+1)
- Le groupe a les permissions de lecture et d'exécution (5 = 4+1)
- Les autres ont les permissions de lecture et d'exécution (5 = 4+1)
- Vérifiez à nouveau les permissions :
stat -c '%A %a %n' ~/project/testfile.txt
La sortie devrait maintenant afficher :
-rwxr-xr-x 755 /home/labex/project/testfile.txt
- Vérifions également comment l'heure de changement a été affectée :
stat ~/project/testfile.txt | grep Change
Vous devriez remarquer que l'horodatage Change a été mis à jour car nous avons modifié les métadonnées du fichier (permissions).
Comprendre les horodatages et les permissions est essentiel pour l'administration système et le dépannage des problèmes d'accès aux fichiers. Avec la commande stat, vous pouvez facilement surveiller ces aspects des métadonnées des fichiers.
Utilisation de formats personnalisés avec la commande Stat
L'une des fonctionnalités les plus puissantes de la commande stat est la possibilité de personnaliser son format de sortie. Ceci est particulièrement utile lorsque vous avez besoin d'informations spécifiques sur les fichiers ou lorsque vous souhaitez utiliser la sortie dans des scripts.
L'option Format
La commande stat fournit l'option -c ou --format pour personnaliser le format de sortie. Cette option vous permet de spécifier une chaîne de format qui détermine quelles informations sont affichées et comment elles sont formatées.
Créons un autre fichier de test pour travailler avec :
echo "This is another test file." > ~/project/second_file.txt
Spécificateurs de format
La commande stat prend en charge divers spécificateurs de format qui commencent par %. Voici quelques-uns des plus couramment utilisés :
%n: Nom du fichier%s: Taille du fichier en octets%b: Nombre de blocs alloués%u: ID utilisateur du propriétaire%U: Nom d'utilisateur du propriétaire%g: ID du groupe du propriétaire%G: Nom du groupe du propriétaire%a: Droits d'accès en format octal (numérique)%A: Droits d'accès en format lisible par l'homme%x: Heure du dernier accès%y: Heure de la dernière modification%z: Heure du dernier changement
Essayons quelques exemples :
- Afficher le nom et la taille du fichier :
stat -c '%n is %s bytes' ~/project/testfile.txt
La sortie devrait ressembler à :
/home/labex/project/testfile.txt is 85 bytes
- Afficher le propriétaire et les permissions :
stat -c 'Owner: %U, Permissions: %A' ~/project/testfile.txt
La sortie devrait ressembler à :
Owner: labex, Permissions: -rwxr-xr-x
- Afficher plusieurs informations :
stat -c 'File: %n\nSize: %s bytes\nOwner: %U\nPermissions: %A\nModified: %y' ~/project/testfile.txt
Cette commande affiche le nom du fichier, la taille, le propriétaire, les permissions et l'heure de modification, chacun sur une nouvelle ligne.
- Comparer les informations pour plusieurs fichiers :
stat -c '%n: %s bytes, modified %y' ~/project/testfile.txt ~/project/second_file.txt
Cette commande affiche le nom, la taille et l'heure de modification pour les deux fichiers.
Utilisation de Stat dans les scripts
La fonctionnalité de format personnalisé est particulièrement utile dans les scripts shell lorsque vous devez extraire des informations spécifiques. Créons un script simple qui calcule la taille totale de plusieurs fichiers :
echo '#!/bin/bash
total=0
for file in "$@"; do
size=$(stat -c "%s" "$file")
echo "File: $file, Size: $size bytes"
total=$((total + size))
done
echo "Total size: $total bytes"' > ~/project/file_size.sh
chmod +x ~/project/file_size.sh
Maintenant, exécutons le script sur nos fichiers de test :
~/project/file_size.sh ~/project/testfile.txt ~/project/second_file.txt
La sortie devrait afficher la taille de chaque fichier et la taille totale.
En maîtrisant l'option de format personnalisé de la commande stat, vous pouvez extraire et traiter efficacement les métadonnées des fichiers pour répondre à vos besoins spécifiques.
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.
Informations sur le système de fichiers
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.
Résumé
Dans ce lab, vous avez appris à utiliser la commande stat de Linux pour récupérer et analyser les métadonnées des fichiers. Vous avez exploré :
- L'utilisation de base de la commande
statpour afficher des informations complètes sur les fichiers - Comment comprendre et travailler avec les horodatages et les permissions des fichiers
- L'utilisation de formats personnalisés pour extraire des informations spécifiques sur les métadonnées
- Travailler avec les répertoires et les systèmes de fichiers pour obtenir des informations sur l'utilisation du stockage
Ces compétences sont précieuses pour l'administration système, le dépannage des problèmes d'accès aux fichiers, la surveillance des modifications de fichiers et la compréhension de l'organisation du stockage. La commande stat offre une fenêtre sur les métadonnées détaillées que Linux maintient pour chaque fichier et répertoire, vous permettant d'acquérir des connaissances plus approfondies sur votre système de fichiers.
En maîtrisant la commande stat et ses diverses options, vous avez ajouté un outil puissant à votre boîte à outils Linux qui peut vous aider à gérer les fichiers plus efficacement et à diagnostiquer les problèmes plus rapidement.



