Comment vérifier l'heure de modification et d'accès d'un fichier sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans le système d'exploitation Linux, chaque fichier est associé à des horodatages (timestamps) qui indiquent quand le fichier a été modifié, consulté ou quand ses attributs ont été changés. Comprendre ces horodatages est essentiel pour les administrateurs système, les développeurs et les utilisateurs ordinaires qui doivent surveiller les activités des fichiers.

Ce tutoriel vous guide à travers les techniques pratiques pour vérifier les horodatages des fichiers dans Linux. Vous apprendrez à afficher les heures de modification et d'accès à l'aide de différentes commandes, ce qui vous aidera à mieux suivre les modifications et à surveiller les modèles d'utilisation des fichiers dans votre environnement Linux.

Comprendre les horodatages (timestamps) de fichiers dans Linux

Dans Linux, chaque fichier est associé à trois horodatages (timestamps) importants qui sont automatiquement gérés par le système :

Types d'horodatages de fichiers

  1. Heure de modification (mtime): Enregistre la dernière fois que le contenu du fichier a été modifié.
  2. Heure d'accès (atime): Enregistre la dernière fois que le fichier a été lu ou consulté.
  3. Heure de changement (ctime): Enregistre la dernière fois que les métadonnées du fichier (autorisations, propriétaire) ont été modifiées.

Commençons à explorer les horodatages de fichiers en créant un fichier de test et en examinant ses propriétés.

Tout d'abord, ouvrez le terminal et accédez à votre répertoire de projet :

cd ~/project

Créez un simple fichier texte en utilisant la commande touch :

touch testfile.txt

La commande touch crée un fichier vide s'il n'existe pas, ou met à jour les horodatages s'il existe déjà.

Vérifions les informations de base sur le fichier en utilisant la commande ls avec l'option -l (format de liste détaillée) :

ls -l testfile.txt

Vous devriez voir une sortie similaire à celle-ci :

-rw-r--r-- 1 labex labex 0 May 15 14:30 testfile.txt

Dans cette sortie :

  • La première colonne indique les autorisations du fichier
  • Les troisième et quatrième colonnes indiquent le propriétaire et le groupe
  • La cinquième colonne indique la taille du fichier (0 octets)
  • La date et l'heure ("May 15 14:30" dans cet exemple) indiquent l'heure de modification
  • La dernière colonne est le nom du fichier

Cette liste de base affiche l'heure de modification, mais pas l'heure d'accès ou l'heure de changement. Nous allons explorer celles-ci dans les étapes suivantes.

Utilisation de la commande stat pour afficher tous les horodatages

Alors que la commande ls nous donne des informations de base sur le fichier, la commande stat fournit des informations plus détaillées sur un fichier, y compris les trois horodatages.

Utilisons la commande stat pour afficher tous les horodatages de notre fichier de test :

stat testfile.txt

Vous devriez voir une sortie similaire à celle-ci :

  File: testfile.txt
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0644/-rw-r--r--)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-05-15 14:30:00.000000000 +0000
Modify: 2023-05-15 14:30:00.000000000 +0000
Change: 2023-05-15 14:30:00.000000000 +0000
 Birth: -

Dans cette sortie :

  • Access : Indique la dernière fois que le fichier a été consulté (atime)
  • Modify : Indique la dernière fois que le contenu du fichier a été modifié (mtime)
  • Change : Indique la dernière fois que les métadonnées du fichier ont été modifiées (ctime)
  • Birth : Indique la date de création du fichier (non pris en charge sur tous les systèmes de fichiers)

Notez que les trois horodatages sont actuellement identiques car nous venons de créer le fichier. Modifions le fichier pour voir comment ces horodatages changent.

Ajoutons du contenu au fichier en utilisant la commande echo :

echo "This is a test file" > testfile.txt

Vérifions maintenant à nouveau les horodatages :

stat testfile.txt

Vous devriez constater que l'heure de modification (Modify) et l'heure de changement (Change) ont été mises à jour, tandis que l'heure d'accès peut rester la même en fonction de la configuration de votre système.

  File: testfile.txt
  Size: 19          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0644/-rw-r--r--)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-05-15 14:30:00.000000000 +0000
Modify: 2023-05-15 14:35:12.000000000 +0000
Change: 2023-05-15 14:35:12.000000000 +0000
 Birth: -

Vérifier l'heure de modification (mtime)

L'heure de modification (mtime) est mise à jour chaque fois que le contenu d'un fichier change. C'est l'horodatage le plus couramment affiché par défaut dans les listes de fichiers.

Utilisation de ls pour vérifier l'heure de modification

La commande standard ls -l affiche l'heure de modification par défaut :

ls -l testfile.txt

Sortie :

-rw-r--r-- 1 labex labex 19 May 15 14:35 testfile.txt

Pour les fichiers modifiés au cours de l'année en cours, ls -l affiche le mois, le jour et l'heure. Pour les fichiers modifiés dans les années précédentes, il affiche le mois, le jour et l'année au lieu de l'heure.

Personnalisation du format de l'heure

Pour voir des informations plus détaillées sur l'horodatage, utilisez l'option --time-style avec ls :

ls -l --time-style=full-iso testfile.txt

Sortie :

-rw-r--r-- 1 labex labex 19 2023-05-15 14:35:12.000000000 +0000 testfile.txt

Cela affiche l'horodatage au format ISO complet, y compris l'année, le mois, le jour, les heures, les minutes, les secondes et le fuseau horaire.

Vous pouvez également utiliser d'autres options de format telles que long-iso ou iso :

ls -l --time-style=long-iso testfile.txt

Sortie :

-rw-r--r-- 1 labex labex 19 2023-05-15 14:35 testfile.txt

Utilisation de date pour afficher l'heure de modification

Une autre façon de vérifier l'heure de modification est d'utiliser la commande date avec l'option -r :

date -r testfile.txt

Sortie :

Mon May 15 14:35:12 UTC 2023

Cette commande affiche l'heure de modification dans un format lisible par l'homme.

Vérifier l'heure d'accès (atime)

L'heure d'accès (atime) est mise à jour chaque fois qu'un fichier est lu ou consulté. Cependant, de nombreux systèmes Linux modernes utilisent des options de montage telles que relatime ou noatime pour réduire la fréquence des mises à jour de l'atime afin d'améliorer les performances.

Utilisation de ls pour vérifier l'heure d'accès

Pour afficher l'heure d'accès au lieu de l'heure de modification, utilisez l'option -u avec ls -l :

ls -lu testfile.txt

Sortie :

-rw-r--r-- 1 labex labex 19 May 15 14:40 testfile.txt

L'horodatage affiché est maintenant l'heure d'accès au lieu de l'heure de modification.

Accédons au fichier pour mettre à jour son heure d'accès :

cat testfile.txt

Sortie :

This is a test file

Vérifions maintenant à nouveau l'heure d'accès :

ls -lu testfile.txt

Vous devriez constater que l'heure d'accès a été mise à jour à l'heure actuelle.

Comparaison de tous les horodatages

Utilisons la commande stat pour voir tous les horodatages après avoir accédé au fichier :

stat testfile.txt

Sortie :

  File: testfile.txt
  Size: 19          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0644/-rw-r--r--)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-05-15 14:41:05.000000000 +0000
Modify: 2023-05-15 14:35:12.000000000 +0000
Change: 2023-05-15 14:35:12.000000000 +0000
 Birth: -

Notez que seul l'heure d'accès a changé, tandis que l'heure de modification et l'heure de changement restent les mêmes qu'auparavant.

Modification des autorisations de fichier pour mettre à jour l'heure de changement

Mettons à jour l'heure de changement (ctime) en modifiant les autorisations du fichier :

chmod 640 testfile.txt

Vérifions à nouveau tous les horodatages :

stat testfile.txt

Sortie :

  File: testfile.txt
  Size: 19          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0640/-rw-r-----)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-05-15 14:41:05.000000000 +0000
Modify: 2023-05-15 14:35:12.000000000 +0000
Change: 2023-05-15 14:42:30.000000000 +0000
 Birth: -

Vous pouvez voir que l'heure de changement (ctime) a été mise à jour à l'heure actuelle, tandis que l'heure d'accès et l'heure de modification restent inchangées.

Manipulation des horodatages de fichiers avec touch

La commande touch vous permet non seulement de créer des fichiers, mais aussi de mettre à jour leurs horodatages. Cela est utile pour les tests ou lorsque vous avez besoin de synchroniser les horodatages entre les fichiers.

Mise à jour de tous les horodatages

Pour mettre à jour tous les horodatages (accès, modification et changement) à l'heure actuelle :

touch testfile.txt

Vérifiez les horodatages :

stat testfile.txt

Sortie :

  File: testfile.txt
  Size: 19          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0640/-rw-r-----)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-05-15 14:45:10.000000000 +0000
Modify: 2023-05-15 14:45:10.000000000 +0000
Change: 2023-05-15 14:45:10.000000000 +0000
 Birth: -

Mise à jour uniquement de l'heure d'accès

Pour mettre à jour uniquement l'heure d'accès :

touch -a testfile.txt

Vérifiez les horodatages :

stat testfile.txt

Sortie :

  File: testfile.txt
  Size: 19          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0640/-rw-r-----)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-05-15 14:46:15.000000000 +0000
Modify: 2023-05-15 14:45:10.000000000 +0000
Change: 2023-05-15 14:46:15.000000000 +0000
 Birth: -

Notez que l'heure de changement (ctime) est également mise à jour car les métadonnées du fichier ont changé.

Mise à jour uniquement de l'heure de modification

Pour mettre à jour uniquement l'heure de modification :

touch -m testfile.txt

Vérifiez les horodatages :

stat testfile.txt

Sortie :

  File: testfile.txt
  Size: 19          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0640/-rw-r-----)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-05-15 14:46:15.000000000 +0000
Modify: 2023-05-15 14:47:20.000000000 +0000
Change: 2023-05-15 14:47:20.000000000 +0000
 Birth: -

Encore une fois, l'heure de changement est également mise à jour.

Définition d'horodatages spécifiques

Vous pouvez définir un horodatage spécifique en utilisant l'option -d avec touch :

touch -d "2023-01-01 12:00:00" testfile.txt

Vérifiez les horodatages :

stat testfile.txt

Sortie :

  File: testfile.txt
  Size: 19          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 2101099     Links: 1
Access: (0640/-rw-r-----)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-05-15 14:48:30.000000000 +0000
 Birth: -

Cela définit à la fois l'heure d'accès et l'heure de modification au 1er janvier 2023, à 12 h 00. L'heure de changement est toujours mise à jour à l'heure actuelle.

Création d'un nouveau fichier avec les horodatages d'un fichier existant

Vous pouvez également utiliser l'option -r pour référencer les horodatages d'un autre fichier :

## Create a new file
touch newfile.txt

## Set its timestamps based on testfile.txt
touch -r testfile.txt newfile.txt

Vérifiez les horodatages du nouveau fichier :

stat newfile.txt

Sortie :

  File: newfile.txt
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d  Inode: 2101100     Links: 1
Access: (0644/-rw-r--r--)  Uid: (1000/labex)   Gid: (1000/labex)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-05-15 14:49:45.000000000 +0000
 Birth: -

Les heures d'accès et de modification de newfile.txt correspondent maintenant à celles de testfile.txt.

Résumé

Dans ce laboratoire (lab), vous avez appris à :

  • Comprendre les trois types d'horodatages de fichiers sous Linux : l'heure de modification (mtime), l'heure d'accès (atime) et l'heure de changement (ctime)
  • Utiliser la commande ls avec diverses options pour afficher les horodatages des fichiers
  • Utiliser la commande stat pour afficher des informations détaillées sur les horodatages
  • Lire le contenu d'un fichier pour mettre à jour l'heure d'accès
  • Modifier les autorisations d'un fichier pour mettre à jour l'heure de changement
  • Utiliser la commande touch pour manipuler manuellement les horodatages des fichiers
  • Appliquer des horodatages spécifiques aux fichiers
  • Copier les horodatages d'un fichier à un autre

Ces compétences sont essentielles pour une gestion et une surveillance efficaces des fichiers sous Linux. Les horodatages des fichiers vous aident à suivre les modifications, à surveiller les modèles d'accès et à vous assurer que les fichiers sont correctement entretenus. Que vous soyez un administrateur système suivant les modifications non autorisées, un développeur déboguant des problèmes liés aux fichiers ou un utilisateur ordinaire organisant vos fichiers, comprendre les horodatages des fichiers est une compétence précieuse dans l'environnement Linux.