GNU/Linux >> Tutoriels Linux >  >> Linux

Horodatages de fichiers Linux expliqués avec des exemples

Ce didacticiel explique les types d'horodatages de fichiers Linux et comment afficher et modifier les horodatages d'un fichier à l'aide de touch commande avec des exemples.

Une brève introduction aux horodatages de fichiers Linux

Sous Linux et Unix en général, chaque fichier a trois types d'horodatages à savoir atime (temps d'accès), mtime (heure de modification) et ctime (changer le temps). Comme son nom l'indique, les horodatages sont utilisés pour savoir quand un fichier a été consulté, modifié et changé.

L'horodatage de l'heure d'accès (ou atime en abrégé) est la dernière fois qu'un fichier a été lu. Par exemple, vous avez peut-être ouvert le fichier. Le fichier a peut-être été accédé par un autre programme ou une machine distante. Vous avez peut-être lu le contenu d'un fichier à l'aide d'une commande (par exemple, cat commande), ou un programme (par exemple gedit, vim, etc.). Le fichier n'est ni édité ni modifié. Il n'a été accédé que par vous ou un autre utilisateur à partir d'un système distant.

L'horodatage de l'heure de modification (ou mtime) indique la dernière fois qu'un fichier (ou un répertoire) a été modifié. En d'autres termes, mtime indique l'heure à laquelle le contenu d'un fichier a été modifié. Par exemple, vous avez peut-être ajouté quelque chose dans le fichier ou supprimé quelque chose du fichier, ou modifié le contenu du fichier.

Un horodatage de changement (ou ctime) indique la dernière fois que le contenu du fichier ou les métadonnées du fichier (c'est-à-dire les attributs du fichier, tels que la propriété du fichier, les autorisations du fichier ou le groupe) ont été modifiés.

En résumé,

  • atime - indique l'heure du dernier accès à déposer pour lire le contenu.
  • mtime - indique l'heure de la dernière modification pour déposer le contenu.
  • ctime - indique l'heure du dernier changement pour déposer le contenu ou les métadonnées du fichier (propriétaire, groupe ou autorisations).

Les horodatages peuvent être utiles dans diverses situations. Voici quelques cas d'utilisation des horodatages :

  • Rechercher et trier des fichiers en fonction de l'heure d'accès ou de modification
  • Rechercher et supprimer des fichiers datant de plus de X jours. Utile pour nettoyer les anciens fichiers de votre disque dur.
  • Vérifier quand un fichier de configuration a été modifié.
  • Vérifier si un fichier a été consulté.
  • Vérifier si un répertoire a été mis à jour.
  • Rechercher des fichiers plus anciens ou plus récents que X jours

Afficher les horodatages des fichiers Linux avec stat et ls commandes

Nous pouvons afficher les horodatages des fichiers sous Linux en utilisant stat commande. Selon les pages de manuel, le stat La commande affiche l'état du fichier ou du système de fichiers sous Linux. La commande stat fait partie de GNU Coreutils , alors ne nous embêtons pas à l'installer.

Maintenant, vérifions les horodatages d'un fichier texte nommé ostechnix.txt en utilisant stat commande :

$ stat ostechnix.txt

Exemple de résultat :

  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Les trois dernières lignes de la sortie ci-dessus indiquent respectivement l'heure d'accès, l'heure de modification et l'horodatage de l'heure de changement. Lorsque nous venons de créer un nouveau fichier, tous les horodatages sont identiques.

Avez-vous remarqué la ligne "Birth: " à la fin de la sortie ? Il indique l'horodatage de la création du fichier. La norme POSIX ne définit pas d'horodatage pour la création du fichier. Certains systèmes de fichiers (par exemple, ext4, JFS, Btrfs) stockent cette valeur, mais il n'existe actuellement aucune API du noyau Linux pour y accéder. Ainsi, nous voyons un trait d'union "-" au lieu d'un horodatage dans la ligne "Naissance :".

Vous pouvez également obtenir les horodatages atime, mtime et ctime individuellement en utilisant ls commande.

Pour afficher l'horodatage de l'heure de modification (mtime), utilisez ls -l commande :

$ ls -l ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Pour afficher l'horodatage de l'heure de changement (ctime), exécutez ls -lc commande :

$ ls -lc ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Ici, le c L'indicateur est utilisé pour afficher l'heure de la dernière modification des métadonnées de fichier ou des attributs de fichier.

Afficher l'horodatage de l'heure d'accès (atime) avec ls -lu commande :

$ ls -lu ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Ici, le u flag affiche l'heure du dernier accès au fichier.

Modifier les horodatages des fichiers Linux avec touch commande

Le touch La commande est utilisée pour modifier les horodatages des fichiers ainsi que pour créer de nouveaux fichiers vides sous Linux. Tout comme stat commande, le touch la commande fait également partie de GNU coreutils , vous n'avez donc pas besoin de l'installer non plus.

Avant de changer les horodatages, récupérons les horodatages actuels du fichier nommé ostechnix.txt pour référence :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Comme vous pouvez le voir dans la sortie ci-dessus, le fichier ostechnix.txt a été consulté. modifié et changé à la même date et heure, c'est-à-dire le 11 novembre 2020 à 17:31:01.

Changeons les horodatages de ce fichier en utilisant touch commande comme ci-dessous :

$ touch ostechnix.txt

La commande ci-dessus changera tous les horodatages (c'est-à-dire atime, mtime et ctime) à l'heure actuelle de votre ordinateur.

Examinons maintenant les horodatages du fichier avec stat commande :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:39:59.430610787 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:39:59.430610787 +0530
 Birth: -

Voir? Tous les horodatages ont été remplacés par l'heure actuelle de mon système, c'est-à-dire 2020-11-10 17:51:02 .

Il est également possible de modifier les horodatages individuels séparément. Par exemple, vous pouvez modifier uniquement l'horodatage de l'heure d'accès (atime) avec -a drapeau :

$ touch -a ostechnix.txt

La commande ci-dessus définira l'horodatage de l'heure d'accès sur l'heure actuelle.

Maintenant, vérifiez l'horodatage de ostechnix.txt fichier avec stat commande :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:43:46.555428706 +0530
 Birth: -

Comme vous le voyez dans la sortie ci-dessus, le temps d'accès est remplacé par l'heure actuelle. L'heure de changement est également mise à jour.

Pour changer uniquement l'horodatage de la modification (mtime), utilisez -m drapeau :

$ touch -m ostechnix.txt

Vérifiez si le mtime a changé avec stat commande :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:47:17.577722187 +0530
Change: 2020-11-11 17:47:17.577722187 +0530
 Birth: -

Maintenant, les horodatages mtime et ctime ont changé tandis que atime est resté tel quel.

Comme vous l'avez peut-être remarqué lorsque nous modifions l'heure d'accès ou l'heure de modification, le ctime est également mis à jour.

Si vous souhaitez modifier simultanément les horodatages atime et mtime, utilisez -d option.

$ touch -d "2020-11-11 17:50:01" ostechnix.txt

Vérifiez si les horodatages atime et mtime ont été modifiés ou non avec stat commande :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:50:01.000000000 +0530
Modify: 2020-11-11 17:50:01.000000000 +0530
Change: 2020-11-11 17:51:17.024213698 +0530
 Birth: -

Nous avons maintenant défini l'heure d'accès et l'heure de modification à une heure spécifique, c'est-à-dire 2020-11-11 17:50:01 . Et l'horodatage ctime a également été mis à jour à l'heure actuelle.

Il est également possible d'utiliser un horodatage spécifique au lieu de l'heure actuelle avec -t signaler également :

$ touch -t 2011111754 ostechnix.txt

Cette commande définira les horodatages atime et mtime sur 2020-11-11 17:54:00 . Vérifiez-le avec stat commande comme ci-dessous :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:56:20.844405239 +0530
 Birth: -

Comme indiqué précédemment, le ctime est mis à jour lorsque les atime et mtime sont modifiés. Si vous souhaitez modifier uniquement l'horodatage ctime, il n'y a pas d'indicateur dédié dans touch commande. Vous devez donc modifier manuellement le ctime en modifiant les métadonnées du fichier ou les attributs du fichier. Par exemple, je vais attribuer une autorisation exécutable vers ostchnix.txt fichier avec chmod commande :

$ chmod +x ostechnix.txt

Vérifiez si ctime est mis à jour avec stat commande :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Voir? L'horodatage ctime a changé, mais pas les heures atime et mtime. Parce que le fichier n'est ni consulté ni modifié. J'ai changé l'autorisation du fichier uniquement.

Modifiez les horodatages des fichiers en affichant, en accédant ou en modifiant les fichiers

Comme indiqué précédemment, l'horodatage atime est modifié lorsque nous accédons au fichier en lecture. Essayez d'accéder au fichier en lecture en utilisant cat commandez et voyez ce qui se passe.

$ cat ostechnix.txt
This is a text file.

Vérifiez maintenant si l'horodatage de l'heure d'accès est mis à jour :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Voir? La valeur atime a maintenant changé.

Le mtime est mis à jour lorsque nous ajoutons ou supprimons des données d'un fichier.

Permettez-moi d'ajouter une ligne dans le ostechnix.txt fichier :

$ echo "modify this file" >> ostechnix.txt

Vérifiez les horodatages des fichiers :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 18:01:49.072771458 +0530
Change: 2020-11-11 18:01:49.072771458 +0530
 Birth: -

Depuis que le contenu du fichier a changé, ses mtime et ctime ont tous deux changé.

Modifier les horodatages des liens symboliques

Par défaut, si vous utilisez touch commande sur un lien symbolique (ou lien symbolique), cela changera également les horodatages du fichier référencé.

Si vous souhaitez uniquement modifier l'horodatage d'un lien symbolique, utilisez -h , (--no-dereference ) :

$ touch -h <path-to-symlink>

[Astuce bonus] Copiez les horodatages d'un autre fichier

La commande touch a une option appelée -r, (--reference=) qui vous permet de copier les horodatages d'un fichier à un autre.

La commande suivante copiera les horodatages du fichier1 vers le fichier2.

$ touch -r file1.txt file2.txt

Pour plus de détails, reportez-vous aux pages de manuel de stat et touch commandes :

$ man stat
$ man touch

Conclusion

Dans ce guide, nous avons discuté de trois types d'horodatages de fichiers Linux, à savoir atime, mtime et ctime, comment afficher les horodatages de fichiers à l'aide de stat et ls commandes et enfin comment changer ces horodatages de fichiers avec touch commande. J'espère que cela vous aidera.


Linux
  1. Commande Linux cut expliquée avec 6 exemples

  2. Commande de tri sous Linux avec des exemples

  3. Commande Linux Traceroute, expliquée avec des exemples

  4. Comment utiliser la commande Vmstat sous Linux expliquée avec des exemples

  5. Horodatages de fichiers sous Linux :atime, mtime, ctime expliqués

Utilisation de la commande Linux mv avec des exemples

Explication de la commande Linux tee (avec exemples)

La commande Linux csplit expliquée (avec des exemples)

Commande de montage Linux avec exemples

Commande Linux gawk avec exemples

Linux make Commande avec des exemples