Estoy tratando de entender con precisión cuándo se cambia la marca de tiempo ctime de un archivo. En muchos lugares (p. Ej., En la respuesta aceptada aquí ) se sugiere que cualquier cambio en los atributos del archivo también cambiará ctime. Sin embargo, esto parece no ser cierto, al menos en mi Ubuntu 12.04 (sí, lo sé, un poco viejo ...):
cat file.txt > /dev/null
cambia el atime, por lo que cambia los atributos del archivo (en el inodo del archivo), pero no cambia el ctime.
Otras fuentes (p. Ej., Aquí y aquí ) sugieren que solo algunas operaciones en los atributos del archivo realmente cambian el ctime, pero no se proporciona una lista precisa.
¿Dónde puedo encontrar una referencia precisa sobre qué operaciones cambian el ctime?
filesystem
VeryHardCoder
fuente
fuente
cat
, ¿lo examinótouch
?Respuestas:
Hay tres marcas de tiempo en los sistemas Unix:
atime
: Tiempo de accesoEsta marca de tiempo le indica cuándo se accedió al archivo la última vez, incluido solo el acceso de lectura.
ctime
: Cambio de horaEsta marca de tiempo le indica cuándo cambiaron los atributos del archivo (información de inodo) la última vez. Eso incluye, por ejemplo, propiedad y permisos, pero un cambio de contenido también desencadena una actualización de esta marca de tiempo.
Tenga en cuenta que los cambios en el atime parecen ser una excepción, ya que no desencadenan una actualización de ctime. Esto probablemente se deba a que un simple acceso de lectura que es suficiente para desencadenar una actualización atime no realiza cambios relevantes en los atributos del archivo. Y uno de los propósitos principales de ctime es ayudar a las herramientas de respaldo a determinar si un archivo ha cambiado. El atime es una información irrelevante para tales herramientas y la actualización de una copia de seguridad solo para actualizar un atime modificado porque alguien ha leído el archivo sería inútil.
No estoy seguro, pero algunas personas piensan que este comportamiento (los cambios a atime no actualizan ctime) solo se debe a las opciones de montaje (comorelatime
) del sistema de archivos subyacente que almacena en caché y retrasa las actualizaciones atime en el inodo por razones de rendimiento en la memoria y solo los aplica a los inodos reales en el disco (desencadenando una actualización de ctime) bajo ciertas condiciones.@kos lo intentó y, aparentemente, incluso cuando se monta un FS con la opción `` strictatime``, el ctime parece que nunca se actualiza si cambia el tiempo.
mtime
: Tiempo de modificaciónEsta marca de tiempo le indica cuándo se modificó el contenido del archivo la última vez.
Entonces, un simple acceso de lectura usando
cat FILENAME
solo cambia el atime , pero no el ctime ya que no se modificó ningún atributo de archivo. El cambio de atime no cuenta.fuente