Comment modifier un fichier sans modifier ses horodatages sous Linux
Comme vous le savez peut-être, les horodatages « heure d'accès » et « heure de modification » d'un fichier seront remplacés par l'heure actuelle une fois le fichier édité ou modifié. Parfois, vous souhaiterez peut-être conserver les anciens horodatages pour une raison quelconque, même après avoir édité ou modifié les fichiers. Ce bref guide explique comment modifier un fichier sans modifier son horodatage sous Linux.
Si vous ne savez pas grand-chose sur les horodatages des fichiers Linux, reportez-vous au guide suivant.
- Les horodatages des fichiers Linux expliqués avec des exemples
Modifier un fichier sans modifier ses horodatages sous Linux
Les horodatages d'un fichier peuvent être mis à jour à l'aide de la commande touch
. Les horodatages sont également mis à jour lorsque nous ajoutons manuellement du contenu dans un fichier ou en supprimons des données. Si vous souhaitez modifier le contenu des fichiers sans modifier leurs horodatages, il n'existe aucun moyen direct de le faire. Mais c'est possible !
Nous pouvons utiliser l'une des options -r
de la commande touch
(référence) pour conserver l'horodatage du fichier après l'avoir édité ou modifié. L'option -r
est utilisée pour définir les horodatages d'un fichier sur les valeurs d'horodatage d'un autre.
J'ai un fichier texte nommé ostechnix.txt
. Regardons les horodatages de ce fichier avec la commande stat
:
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-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:47:55.992788870 +0530
Birth: -
Comme déjà indiqué, si nous modifions le contenu ou les métadonnées de ce fichier, les horodatages changeront également.
Créez maintenant un nouveau fichier vide, par exemple ostechnix.timestamp
, avec les mêmes horodatages que le fichier ostechnix.txt
à l'aide de la commande touch
:
touch -r ostechnix.txt ostechnix.timestamp
Vérifiez les horodatages du nouveau fichier :
stat ostechnix.timestamp
File: ostechnix.timestamp
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 4328645 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ sk) Gid: ( 1000/ sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:48:48.934235300 +0530
Birth: -
Modifier un fichier sans changer son horodatage sous Linux
Voir? Les horodatages atime et mtime des deux fichiers sont identiques !
Apportez maintenant les modifications dans le fichier principal, c'est-à-dire ostechnix.txt
. Comme vous l'avez deviné, les horodatages du fichier principal vont changer.
Enfin, copiez les horodatages du nouveau fichier, c'est-à-dire ostechnix.timestamp
dans le fichier principal :
touch -r ostechnix.timestamp ostechnix.txt
Désormais, le fichier principal a ses anciens horodatages avant d'être édité/modifié.
Veuillez noter que nous ne pouvons pas conserver les horodatages de l'heure de modification (ctime). Il sera toujours mis à jour à l’heure actuelle.
TL;DR
Créez un nouveau fichier avec les mêmes horodatages que le fichier principal avec la commande touch
, effectuez les modifications dans le fichier principal et définissez les horodatages du nouveau fichier sur le fichier principal avec l'option -r
.
J'espère que cela t'aides.