No Mac OS X, parece haver quatro carimbos de data e hora diferentes associados a um arquivo. Estas marcas de tempo nem sempre são atualizados independentemente um do outro, mas pode ter algum controle individual com um pouco de cuidado e com o uso de touch
, SetFile
e chown
(ou chmod
). Para ver isso, vamos experimentar e criar um novo arquivo no prompt de comando #
:
# 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
A primeira data listada é a hora do último acesso ( atime
), a segunda é a hora da última modificação ( mtime
), a terceira é a última alteração de status ( ctime
), a quarta é a hora da criação do arquivo (nascimento Btime
), consulte man lstat
.
Para modificar o tempo de acesso ( atime
) para um horário especificado, use:
# 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
Para modificar o horário da modificação ( mtime
) e o horário da criação do arquivo ( Btime
) para um horário especificado, use:
# 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
Aparentemente, isso também atualiza automaticamente a hora da última alteração de status ( ctime
) para a hora atual do sistema!
Para modificar apenas o tempo de criação / nascimento ( Btime
) para um determinado momento, use (conforme proposto por outros acima):
# 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
Para modificar apenas a hora da última alteração de status ( ctime
) para a hora atual do sistema, use, por exemplo:
# 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
onde username
é o proprietário do arquivo (conforme relatado por stat
ou ls -l
). Isso não altera a propriedade do arquivo, mas acessa o inode do arquivo e registra isso como uma hora da última alteração de status. Infelizmente, não é possível especificar a hora explicitamente aqui, exceto alterando a hora do computador ...
Em resumo, para poder alterar os quatro registros de data e hora de forma independente, pode-se usar (nesta ordem pelos últimos 3):
touch -a -tCCYYMMDDHH.SS <file>
touch -m -tCCYYMMDDHH.SS <file>
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [definir data do sistema]
chown username <file>
[reverta para a data normal do sistema]
(Obviamente, redefinir a data do sistema pode não ser uma operação isenta de riscos, você foi avisado.)