Recherche de site Web

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.

Articles connexes