In Mac OS X ci sono quattro diversi timestamp associati a un file. Questi timestamp non sono sempre aggiornati indipendentemente l'uno dall'altro, ma si può avere un controllo individuale con un po 'di attenzione e con l'uso di touch
, SetFile
e chown
(o chmod
). Per vedere questo, proviamo e creiamo un nuovo file dal prompt dei comandi #
:
# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
La prima data elencata è l'ultimo tempo di accesso ( atime
), il secondo è l'ultimo tempo di modifica ( mtime
), il terzo è l'ultimo cambio di stato ( ctime
), il quarto è il tempo di creazione del file (nascita , Btime
), vedi man lstat
.
Per modificare il tempo di accesso ( atime
) a un orario specificato, utilizzare:
# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
Per modificare il tempo di modifica ( mtime
) e di tempo della creazione del file ( Btime
) a un tempo specificato:
# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt
Apparentemente questo aggiorna anche automaticamente l'ora dell'ultima modifica di stato ( ctime
) all'ora corrente del sistema!
Per modificare solo il tempo di creazione / nascita ( Btime
) in un dato momento, usa (come proposto sopra):
# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
Per modificare solo l'ora dell'ultima variazione di stato ( ctime
) per l'ora corrente del sistema, ad esempio:
# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
dove username
è il proprietario del file (come riportato da stat
o ls -l
). Questo non cambia la proprietà del file, ma accede all'inode del file e registra ciò come un momento dell'ultima modifica dello stato. Sfortunatamente, non è possibile specificare l'ora in modo esplicito qui a parte cambiando l'ora del computer ...
In sintesi, per poter cambiare i quattro timestamp in modo indipendente, si può usare (in questo ordine per gli ultimi 3):
-
touch -a -tCCYYMMDDHH.SS <file>
-
touch -m -tCCYYMMDDHH.SS <file>
-
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [imposta la data di sistema]
chown username <file>
[ripristina la normale data di sistema]
(Naturalmente, la reimpostazione della data di sistema potrebbe non essere un'operazione priva di rischi, sei stato avvisato.)