Come sapete, se aprite e modificate un qualsiasi tipo di file, ad esempio un documento creato con LibreOffice, vengono aggiornati i timestamp riguardanti “l’ora di accesso” e “l’ora di modifica”. Potrebbe tornarvi utile sapere come modificare un file conservando i vecchi timestamp. Prima di mostrarvi come procedere consentitemi un breve riepilogo su questo argomento.
Timestamp su Linux
In Linux ogni file ha tre tipi di timestamp: atime (ora di accesso, access time), mtime (ora di modifica, modification time) e ctime (change time) inoltre c’è il cosiddetto btime (birth time), l’orario di creazione del file. Come suggerisce il nome, i timestamp vengono utilizzati per scoprire quando è stato eseguito l’accesso e modificato un file. Mtime e ctime sono fondamentalmente la stessa cosa: il primo indica le modifiche a un file (aggiunto del testo o cancellato del testo ad esempio), il secondo varia quando varia mtime ma anche quando cambiano la proprietà, o gli attributi o i permessi del file in questione.
Per vedere i timestamp di un file è necessario utilizzare il comando stat
appartenente a GNU Coreutils
. Ecco come visualizzare il timestamp di un qualsiasi file, nel mio caso lffl.txt
:
Modificare un file senza cambiare atime e ctime
I timestamp di un file possono essere aggiornati utilizzando il comando touch
. Dopo aver modificato un file possiamo usare l’opzione -r
del comando touch
per preservare i timestamp del file. L’opzione -r
viene utilizzata per impostare i timestamp di un file sui valori di timestamp di un altro.
Ora vado a modificare il file lffl.txt
riportato nell’immagine sopra. Chiaramente i timestamp vengono aggiornati:
Come evitare l’aggiornamento? Prima di modificare il file bisogna avere cura di creare un nuovo file vuoto con il medesimo timestamp del file da modificare. Per farlo usiamo il comando
touch -r lffl.txt lffl.timestamp
Chiaramente il ctime sarà differente ma atime e mtime saranno uguali al file lffl.txt
.
Ora modificate il file lffl.txt
, salvando le modifiche andrete ad aggiornare i timestamp. Per ripristinare quelli di partenza date il seguente comando:
touch -r lffl.timestamp lffl.txt
Dando nuovamente il comando stat lffl.txt
noterete che atime e mtime sono identici a quelli pre-modifica.
Tenete presente che, by design, non possiamo conservare i tmst dell’ora di modifica (ctime). Questo si aggiornerà sempre, a meno di azioni più invasive. Modificare il ctime di un file implica seguire una delle seguenti strade:
- Impostare l’ora di sistema sull’ora che si desidera imporre, quindi procedere usando il comando touch e infine reimpostare l’ora di sistema corretta;
- Modificare il kernel per aggiungere un’interfaccia che permetta di cambiare il ctime;
- Accedendo direttamente all’immagine del disco, ad esempio con debugfs (mon fatelo mentre il filesystem è montato).
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.
L'articolo [GUIDA] Linux: come modificare un file senza cambiarne il timestamp sembra essere il primo su Linux Freedom.
Leggi il contenuto originale su Linux Freedom