Come forse saprai, i timestamp "ora di accesso" e "ora di modifica" di un file verranno cambiati nell'ora corrente dopo che il file è stato modificato o modificato. A volte, potresti voler preservare i vecchi timestamp per qualsiasi motivo anche dopo aver modificato o modificato i file. Questa breve guida spiega come modificare un file senza cambiarne i timestamp in Linux.
Se non sai molto sui timestamp dei file Linux, fai riferimento alla seguente guida.
- I timestamp dei file Linux spiegati con esempi
Modifica un file senza cambiarne i timestamp in Linux
I timestamp di un file possono essere aggiornati utilizzando touch
comando. I timestamp vengono aggiornati anche quando aggiungiamo manualmente contenuti in un file o rimuoviamo dati da esso. Se vuoi modificare il contenuto dei file senza cambiarne i timestamp, non esiste un modo diretto per farlo. Ma è possibile!
Possiamo usare uno dei touch
opzione del comando -r
(riferimento) per preservare i timestamp del file dopo averlo modificato o modificato. Il -r
l'opzione viene utilizzata per impostare i timestamp di un file sui valori di timestamp di un altro.
Ho un file di testo chiamato ostechnix.txt
. Diamo un'occhiata ai timestamp di questo file con stat
comando:
$ 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: -
Come già detto, se cambiamo i contenuti o i metadati di questo file, cambieranno anche i timestamp.
Ora crea un nuovo file vuoto, ad esempio ostechnix.timestamp
, con gli stessi timestamp di ostechnix.txt
file utilizzando touch
comando:
$ touch -r ostechnix.txt ostechnix.timestamp
Controlla i timestamp del nuovo file:
$ 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: -
Vedere? atime di entrambi i file e mtime i timestamp sono gli stessi!
Ora apporta le modifiche nel file principale, ad esempio ostechnix.txt
. Come hai intuito, i timestamp del file principale cambieranno.
Infine, copia i timestamp del nuovo file, ad esempio ostechnix.timestamp
al file principale:
$ touch -r ostechnix.timestamp ostechnix.txt
Ora il file principale ha i suoi vecchi timestamp prima di essere modificato/modificato.
Tieni presente che non possiamo preservare i timestamp dell'ora di modifica (ctime). Si aggiornerà sempre all'ora corrente.
TL;DR
Crea un nuovo file con gli stessi timestamp del file principale con touch
comando, esegui le modifiche nel file principale e imposta i timestamp del nuovo file sul file principale con -r
opzione.
Spero che questo aiuti.