Conoscere la data di creazione di un file in GNU/Linux
Questo post non sarebbe mai nato se non fosse stato per Lorenzo, che si è trovato davanti alla necessità di risalire alla data di creazione di un file. E si è accorto che questo dato non è di immediata reperibilità. Vista l’importanza di quel suo post, mi sembra giusto darne ulteriore visibilità.
Nota di aggiornamento
Con le recenti versioni di stat
è possibile reperire questa informazione:
$ stat filename
File: filename
Dim.: 487350 Blocchi: 952 Blocco di IO: 4096 file regolare
Device: 8,17 Inode: 56368081 Links: 1
Accesso: (0644/-rw-r--r--) Uid: ( 1000/ aldo) Gid: ( 1000/ aldo)
Accesso : 2022-12-18 09:08:16.340484099 +0100
Modifica : 2019-05-07 12:17:11.000000000 +0200
Cambio : 2021-11-13 23:14:06.304345519 +0100
Creazione: 2020-10-18 07:55:44.026567659 +0200
È anche possibile farlo con ls
:
ls -l --time=birth filename
che restituisce:
-rw-r--r-- 1 aldo aldo 487350 18 ott 2020 filename
In Ext4 è possibile farlo con:
ls -i filename
che restituisce l’inode del file:
6029808 filename
e quindi:
sudo debugfs -R 'stat 6029808' /dev/sda3
dove /dev/sda3
è la partizione in cui risiede il file.
Ed infatti, creando un file di test e dando quel comando, l’output è:
Inode: 6029808 Type: regular Mode: 0644 Flags: 0x80000
Generation: 3337172570 Version: 0x00000000:00000001
User: 1000 Group: 1000 Size: 0
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4e47fa9b:c3e1fd20 -- Sun Aug 14 18:40:59 2011
atime: 0x4e47fa9b:c3e1fd20 -- Sun Aug 14 18:40:59 2011
mtime: 0x4e47fa9b:c3e1fd20 -- Sun Aug 14 18:40:59 2011
crtime: 0x4e47fa9b:c3e1fd20 -- Sun Aug 14 18:40:59 2011
Size of extra inode fields: 28
EXTENTS:
(END)
dove la quartultima riga contiene il dato che ci interessa, cioè crtime
(creation time).
Gli altri sono:
ctime
(change time): ora del cambiamento, che può includere anche solo una modifica ai permessi senza apertura del file;atime
(access time): ora di accesso al file;mtime
(modification time): ora di modifica del file.
Schematicamente, ecco cosa avviene (la x
indica un cambio del timestamp):
ctime | atime | mtime | crtime | |
---|---|---|---|---|
Creazione file | × | × | × | × |
Apertura file | × | |||
Modifica file | × | × | × | |
Cambio permessi | × |
Grazie a Lorenzo per le preziose informazioni.
Photo credits: The Passage of Time, CC by-nc-nd, 2008.
,