La ridenominazione influisce sulla modifica del file o sui tempi di accesso? C'è un elenco da qualche parte di ciò che cambia quali volte?
La ridenominazione influisce sulla modifica del file o sui tempi di accesso? C'è un elenco da qualche parte di ciò che cambia quali volte?
Risposte:
La ridenominazione aggiorna l'ora di modifica:
$ mkdir tmp
$ cd tmp
$ echo abc > a
$ stat a
File: `a'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000 / zelda Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
Birth: -
$ mv a b
$ stat b
File: `b'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ zelda) Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
Birth: -
Il tempo di accesso viene aggiornato durante la lettura del contenuto di un file. Modifica quando aggiorni effettivamente il file (l'apertura per la modifica non è sufficiente per cambiare l'ora di modifica).
cp
e mv
, e vi
per la modifica. Altri editor o il desktop potrebbero gestire l'attività in modo diverso e avere più timestamp aggiornati.
mv
Una modifica che influisce sul mtime del file è una modifica dei dati del file: una scrittura di una quantità di byte diversa da zero o un troncamento che finisce per modificare il file. La creazione di un file imposta anche il suo mtime sulla data corrente. La semplice apertura di un file per la scrittura non influisce sul mtime, supponendo che il file non sia stato creato o troncato.
La lettura da un file (se viene letto un numero diverso da zero) o l'esecuzione di un file imposta il suo tempo sull'ora corrente. L'apertura di un file per la lettura non influisce mai sull'atime. Su Linux, questo è ora disabilitato di default nella maggior parte dei casi; l' atime
opzione mount ripristina gli aggiornamenti atime, mentre l' noatime
opzione mount li disabilita completamente.
I programmi possono cambiare il mtime e il tempo di un file; il comando di base per farlo è touch
. Alcuni programmi di copia file impostano la copia sullo stesso mtime dell'originale, ad esempio cp -p
oppure rsync -t
.
Una modifica che influenza il ctime del file è una modifica dei metadati del file: permessi, proprietario, orari, conteggio dei collegamenti, ecc. Rinominare un file aggiorna anche il suo ctime. Le modifiche ai dati del file influiscono anche sul tempo di trasmissione, ma la lettura da un file non modifica il tempo di trasmissione, anche se cambia il tempo. È impossibile cambiare l'ora in modo diverso dall'impostazione dell'ora corrente (anche il root è vincolato, ma root può indirettamente impostare l'ora in tempo cambiando prima l'ora di sistema o accedendo direttamente alla partizione contenente il filesystem).
Un'ulteriore osservazione empirica non menzionata dalle altre risposte:
L'apertura del file per la scrittura con O_TRUNC
modifica il mtime anche se il file era originariamente vuoto.
Questo sembra essere il caso almeno su ext3 su Linux 3.10.