En Mac OS X parece haber cuatro marcas de tiempo diferentes asociadas con un archivo. Estas marcas de tiempo no siempre se actualizan de forma independiente el uno del otro, pero uno puede tener algún control individual con un poco de cuidado y con el uso de touch
, SetFile
y chown
(o chmod
). Para ver esto, experimentemos y creemos un nuevo archivo desde el símbolo del sistema #
:
# 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 primera fecha indicada es la última hora de acceso ( atime
), la segunda es la última hora de modificación ( mtime
), la tercera es el último cambio de estado ( ctime
), la cuarta es la hora de creación del archivo (nacimiento, Btime
), ver man lstat
.
Para modificar el tiempo de acceso ( atime
) a un tiempo específico, 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 el tiempo de modificación ( mtime
) y el tiempo de creación del archivo ( Btime
) a un tiempo específico 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, esto también actualiza automáticamente la hora del último cambio de estado ( ctime
) a la hora actual del sistema.
Para modificar solo el tiempo de creación / nacimiento ( Btime
) a un tiempo dado, use (como lo propusieron otros arriba):
# 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 solo la hora del último cambio de estado ( ctime
) a la hora actual del sistema, utilice, por ejemplo:
# 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
donde username
es el propietario del archivo (según lo informado por stat
o ls -l
). Esto no cambia la propiedad del archivo, pero accede al inodo del archivo y lo registra como el último cambio de estado. Desafortunadamente, no es posible especificar la hora explícitamente aquí, excepto cambiar la hora de la computadora ...
En resumen, para poder cambiar las cuatro marcas de tiempo de forma independiente, se puede usar (en este orden para las últimas 3):
touch -a -tCCYYMMDDHH.SS <file>
touch -m -tCCYYMMDDHH.SS <file>
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [establecer fecha del sistema]
chown username <file>
[volver a la fecha normal del sistema]
(Por supuesto, restablecer la fecha del sistema puede no ser una operación libre de riesgos, se le ha advertido).