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.