Les fichiers Linux possèdent trois horodatages, la date d’accès (atime), la date de modification (mtime) et la date de changement (ctime).
Comprendre le fonctionnement de ces horodatages est important lorsque l’on souhaite par exemple trouver les derniers fichiers modifiés avec la commande find.
Vous pouvez aussi vous demander comment afficher la date du fichier ou encore comment changer la date d’un fichier.
Ils sont aussi importants lorsque l’on effectue une sauvegarde des données puisque cela permet de savoir les derniers fichiers ajoutés ou modifiés.
Enfin du côté de la sécurité, cela permet de une attaque et piratage lorsqu’un fichier est altéré par un attaquant.
Dans ce tutoriel, je vous explique tout sur les dates de fichiers de Linux.
Table des matières
La date de fichier sur Linux : comment ça marche
Chaque fichier Linux a trois horodatages : l’horodatage d’accès (atime), l’horodatage de modification (mtime) et l’horodate de changement (ctime).
La date d’accès (atime) 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é consulté 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 la commande CAT) ou d’un programme (par exemple Gedit, Vim, etc.). Le fichier n’est ni édité ni modifié. Vous n’avez été consulté que par vous ou un autre utilisateur d’un système distant.
La date de modification (mtime) indique la dernière fois qu’un fichier (ou un répertoire) a été modifié. En d’autres termes, mtime indique le temps que le contenu d’un fichier a été modifié. Par exemple, vous aurez peut-être ajouté quelque chose dans le fichier ou supprimé quelque chose dans le fichier ou avoir modifié le contenu du fichier.
La date de changement (ctime) montre la dernière fois que le contenu du fichier ou les métadonnées de fichier (I.E. Les attributs de fichier, tels que la propriété de fichier, les autorisations de fichiers ou le groupe) ont été modifiés.
Les dates de fichiers sont très utiles dans diverses situations.
Voici quelques cas d’utilisation pour les horodatages :
- Trouver et trier les fichiers en fonction de l’heure d’accès ou de modification
- Trouver et supprimer des fichiers plus âgés que les jours x. Utile pour nettoyer les anciens fichiers dans votre disque dur
- Vérifier quand un fichier de configuration a été modifié
- Vérifier si un fichier a été consulté
- Vérifiez si un répertoire a été mis à jour
- Trouver des fichiers plus âgés ou plus récents que les jours X
Comment afficher la date de modification ou d’accès
avec la commande stat
Vous pouvez afficher les horodatages de fichier sous Linux à l’aide de la commande stat.
Cette dernière est complète pour afficher la taille du fichier, les bloc et inodes utilisés, les uid, gid, et enfin les dates d’accès, modification ou changement.
Avez-vous remarqué la ligne Birth: à la fin de la sortie ? Il indique l’horodatage du temps de création de fichier. La norme POSIX ne définit pas une horodatage pour la création de fichiers.
Certains systèmes de fichiers (ext4, JFS, BTRFS) stockent cette valeur, mais il n’existe actuellement aucune API du noyau Linux pour y accéder.
avec la commande ls
Vous pouvez également obtenir les horodatages atime, mtime et ctime individuellement à l’aide de la commande ls.
Pour afficher la date de modification (mtime), utilisez la commande ls -l :
Pour afficher la date de changement (ctime), exécutez la commande ls -lc :
Afficher la date d’accès (atime) avec la commande ls -lu :
Comment trouver un fichier par sa date de modification ou accès
La commande find possède plusieurs options -mtime, -cmin, -atime pour chercher des fichiers sur la date d’accès ou de modification.
Par exemple, pour recherche dans tout le répertoire personnel à la recherche de tous les fichiers qui se terminent par les indicateurs .txt sont modifiés au cours des 5 derniers jours.
find /home/ -iname "*.txt" -mtime 5 -print
Trouver tous les fichiers modifiés il y a moins de 24 heures.
find /home/ -iname "*.txt" -mtime -24 -print
Retrouver les fichiers modifiés il y a 60 min.
find /home/ -iname "*.txt" -cmin -60 -print
Pour trouver tous les fichiers qui sont consultés il y a 50 jours.
find /home -iname "*.txt" -atime 50 -print
Comment changer la date modification ou d’accès
La commande touch de Linux permet de modifier les dates d’un fichier.
Voici les options à utiliser :
OPTIONS | DESCRIPTION |
---|---|
-a | Changer le la date d’accès au fichier |
-d=<texte> –date=<texte> | Changer la date du fichier en spécifiant un horodatage |
-h –no-dereference | Changer la date d’un fichier symbolique |
-m | Changer la date de modification d’un fichier |
-r=<fichier> –reference=<fichier> | Modifier un horodatage à l’horodatage du fichier référencé |
-t <timestamp> | Modifie un horodatage, où le timestamp est le format de date / heure |
Pour changer la date d’accès d’un fichier par la date courante, vous devez spécifier l’option -a :
touch -a test.txt
Pour modifier la date de modification à l’heure courante, il faut utiliser l’option -m :
touch -m test.txt
Si vous souhaitez modifier simultanément les horodatages atime et mtime, cela se fait avec l’option -d :
touch -d "2020-11-11 17:50:01" test.txt
Enfin si vous souhaitez définir un horodatage spécifique (timestamp), utilisez l’option -t :
touch -t 2011111754 test.txt