Conoscere la data di creazione di un file in GNU/Linux

Scovare la data di creazione di un file in GNU/Linux non è proprio semplicissimo. Vediamo come si può fare.

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à.

In Ext4 è possibile farlo con:

sudo debugfs -R 'stat /pippo/Scrivania/test.txt' /dev/sda3

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 x x x x
Apertura file   x    
Modifica file x x x  
Cambio permessi x      

Grazie a Lorenzo per le preziose informazioni.

Photo courtesy: ToniVC, The Passage of Time, CC by-nc-nd.

Autore: Aldo Latino

Aldo Latino usa con entusiasmo Linux nella distribuzione Ubuntu, è un appassionato di WordPress e si diletta a fare il blogger. Ha anche una lista dei desideri. Per altre informazioni visita la sua .

4 pensieri riguardo “Conoscere la data di creazione di un file in GNU/Linux”

  1. Ho una precisazione da fare su questo comando.

    Ho scoperto che se usi una home crittografata, come nel mio caso, non funziona. Infatti ho provato ad ottenere le informazioni su un file della mia home e ricevo questo messaggio d’errore:
    ——–
    nicola@nicola-laptop:~$ sudo debugfs -R ‘stat /home/nicola/Scrivania/test.txt’ /dev/sda1
    debugfs 1.41.11 (14-Mar-2010)
    /home/nicola/Scrivania/test.txt: File not found by ext2_lookup
    ——–
    Se invece provo lo stesso comando con un file in una cartella non crittografata, per esempio /tmp, allora funziona correttamente. Quindi a meno che non esista un’altra soluzione che sappia gestire i nomi dei file crittografati, questo comando non può essere utilizzato.

    1. La partizione della tua home è montata in /dev/sda1?
      Se sì, prova a cambiare il comando in

      sudo debugfs -R 'stat /nicola/Scrivania/test.txt' /dev/sda1

      togliendo quindi /home.

  2. Ho provato il tuo suggerimento, ma l’errore è identico.
    La mia ipotesi è che fornendo il nome in chiaro del file, il comando lo cerca, così come impostato, nella mia home crittografata. Il problema è che anche i nomi dei file sono crittografati e se li guardiamo “dall’esterno” sono delle lunghe stringhe di caratteri e numeri incomprensibili. Secondo me questi comandi esistevano molto prima che arrivasse la crittografia sul file system, e quindi non prevedono la “traduzione” dei nomi di file dalla forma in chiaro a quella crittografata.

    Lo stesso problema ce l’ho con altri comandi come “locate” che non mi trova più nulla delle stringhe in chiaro che gli chiedo, proprio perché non riesce a vederle.

I commenti sono chiusi