GNU/Linux >> Linux Esercitazione >  >> Linux

timestamp, ora di modifica e ora di creazione di un file

Ci sono 3 tipi di "timestamp":

  • Accesso - l'ultima volta che il file è stato letto
  • Modifica - l'ultima volta che il file è stato modificato (il contenuto è stato modificato)
  • Modifica:l'ultima volta che i metadati del file sono stati modificati (ad es. autorizzazioni)

Per visualizzare queste informazioni, puoi usare stat che fa parte di coreutils.

stat ti mostrerà anche alcune informazioni in più come il dispositivo, gli inode, i link, ecc.

Ricorda che questo tipo di informazioni dipende molto dal filesystem e dalle opzioni di montaggio. Ad esempio, se monti una partizione con noatime opzione, non verrà scritta alcuna informazione di accesso.

Un'utilità per modificare i timestamp sarebbe touch .Ci sono alcuni argomenti per decidere quale timestamp cambiare (ad esempio -a per l'ora di accesso, -m per l'ora di modifica) e per influenzare l'analisi di un nuovo timestamp dato.Vedi man touch per maggiori dettagli.

touch può tornare utile in combinazione con cp -u ("copia solo quando il file SOURCE è più recente del file di destinazione o quando manca il file di destinazione" ) o per la creazione di file marker vuoti.


La risposta di echox è valida ma voglio aggiungere informazioni riguardanti il ​​tempo di creazione del file.

Supporto del file system

Alcuni file system supportano una voce aggiuntiva nell'inode relativa all'ora di creazione (o ora di nascita). So che ext4 supporta questa funzionalità e anche JFS e BTRFS.

Tuttavia, la maggior parte degli strumenti e delle API non sono ancora stati aggiornati per leggere queste informazioni aggiuntive. Quindi, anche se potrebbe essere lì, non è accessibile.

Ad esempio su Ubuntu 12.04 LTS ottengo quanto segue per un file che ho creato oggi:

$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest 
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
 Birth: -
$ sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
 ctime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
 atime: 0x4fcdee98:42b417dc -- Tue Jun  5 13:33:44 2012
 mtime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun  5 13:32:22 2012
[...]

Puoi vedere che la funzione stat più recente ha un campo di nascita, sebbene l'output sembri errato. E tramite debugfs possiamo ottenere le informazioni (crtime dato che sono sul file system ext4).

supporto statistico

Dal Kernel 4.11 è ora disponibile una nuova chiamata di sistema statx, oltre a un migliore supporto dell'anno 2038 o dei file system di rete, porta anche alcune funzionalità extra come btime o l'accesso all'ora di nascita (ora di creazione). Il supporto per ext4 dovrebbe essere nella stessa versione del kernel 4.11.

Ci sono state patch per aggiungere il supporto a questa nuova chiamata di sistema nelle versioni successive del kernel:ad es. BTRFS e F2FS nel kernel 4.13, SMB3 nel 4.14, GFS2 nel 4.15, NFS nel 4.16, ecc.

L'imminente glibc fornirà una chiamata di funzione per interrogare questa interfaccia (vedi le notizie di Phoronix sul supporto di glibc statx). Quindi possiamo aspettarci presto il supporto per questa funzionalità nello spazio utente.


Linux
  1. Come fare A Ls e quindi ordinare i risultati per data di creazione?

  2. Quando è stato creato il file?

  3. Ottieni il tempo di creazione/creazione del file??

  4. Thread e descrittori di file

  5. Come elencare i file in modo ricorsivo e ordinarli in base all'ora di modifica?

Come ottenere la data e l'ora correnti in Python

Impedisci la cancellazione o la modifica accidentale di file e cartelle in Linux

Installazione e configurazione di vsFTPD

Comprensione dei timestamp dei file Mac

come posso verificare in bash se un file è stato creato più di x tempo fa?

Guarda Filesystem in tempo reale su OS X e Ubuntu