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 après l'édition ou la modification du fichier. 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 éditer un fichier sans changer ses horodatages sous Linux.
Si vous ne savez pas grand-chose sur les horodatages de fichiers Linux, consultez le guide suivant.
- Horodatages de fichiers Linux expliqués avec des exemples
Modifier un fichier sans changer ses horodatages sous Linux
Les horodatages d'un fichier peuvent être mis à jour en utilisant touch
commande. 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 ses horodatages, il n'existe aucun moyen direct de le faire. Mais c'est possible !
Nous pouvons utiliser l'un des touch
option de la commande -r
(référence) pour conserver les horodatages du fichier après l'avoir édité ou modifié. Le -r
L'option 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 stat
commande :
$ 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 indiqué précédemment, 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 ostechnix.txt
fichier en utilisant touch
commande :
$ 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: -
Voir? atime des deux fichiers et mtime les horodatages sont les mêmes !
Effectuez 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
au fichier principal :
$ touch -r ostechnix.timestamp ostechnix.txt
Maintenant, 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 changement (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 touch
commande, effectuez les modifications dans le fichier principal et définissez les horodatages du nouveau fichier sur le fichier principal avec -r
option.
J'espère que cela vous aidera.