¿Qué cuenta como modificación o cambio de archivo?

16

¿El cambio de nombre afecta la modificación del archivo o el tiempo de acceso? ¿Hay una lista en algún lugar de lo que cambia qué veces?

Gilles 'SO- deja de ser malvado'
fuente

Respuestas:

9

El cambio de nombre actualiza el tiempo de cambio:

$ 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: -

El tiempo de acceso se actualiza al leer el contenido de un archivo. Modifique cuando realmente actualice el archivo (abrir para modificar no es suficiente para cambiar el tiempo de modificación).

Zelda
fuente
¿Copiar y pegar un archivo cambia su tiempo de "modificación" en el nuevo archivo? ¿Usar Ctrl + X y pegar cambia el tiempo de "cambio"?
1
Una copia crea un nuevo archivo con Modificar, Acceso y Cambiar con un nuevo valor (todo lo mismo). Pegar algo en un editor (y luego guardar) actualiza los tres (Cambiar con una marca de tiempo posterior a los otros dos, por supuesto, solo después de guardar)
Zelda
Me refería a usar CTRL + x en el archivo y CTRL + v en otro lugar.
Esto está utilizando las herramientas de línea de comandos cpy mv, y vipara la edición. Otros editores, o su escritorio pueden manejar la tarea de manera diferente y tener más marcas de tiempo actualizadas.
Zelda
Por ejemplo, Nautilus no actualiza Access y Modify usando Ctrl + X y luego Ctrl + V, solo Change es diferente, comomv
Zelda
9

Una modificación que afecta el tiempo m del archivo es un cambio de los datos del archivo: una escritura de una cantidad de bytes distinta de cero, o un truncamiento que termina modificando el archivo. La creación de un archivo también establece su mtime en la fecha actual. Simplemente abrir un archivo para escribir no afecta el tiempo m, suponiendo que el archivo no se crea o se trunca.

La lectura de un archivo (si se lee un número distinto de cero de bytes) o la ejecución de un archivo establece su tiempo a la hora actual. Simplemente abrir un archivo para leer nunca afecta el tiempo. En Linux, esto ahora está deshabilitado por defecto en la mayoría de las circunstancias; la atimeopción de montaje restaura las actualizaciones de atime, mientras que la noatimeopción de montaje las desactiva por completo.

Los programas pueden cambiar el mtime y el atime de un archivo; El comando básico para hacer esto es touch. Algunos programas de copia de archivos configuran la copia al mismo tiempo que el original, por ejemplo cp -po rsync -t.

Un cambio que afecta el ctime del archivo es un cambio de los metadatos del archivo: permisos, propietario, tiempos, recuento de enlaces, etc. Cambiar el nombre de un archivo también actualiza su ctime. Los cambios en los datos del archivo también afectan el ctime, pero la lectura de un archivo no cambia el ctime incluso si cambia el atime. Es imposible cambiar el tiempo c de cualquier otra manera que no sea establecer el tiempo actual (incluso la raíz está restringida, pero la raíz puede establecer indirectamente el tiempo c cambiando primero la hora del sistema o accediendo directamente a la partición que contiene el sistema de archivos).

Gilles 'SO- deja de ser malvado'
fuente
1

Una observación empírica adicional no mencionada por las otras respuestas:

Al abrir el archivo para escribir con O_TRUNCmtime cambia, incluso si el archivo estaba originalmente vacío.

Este parece ser el caso al menos en ext3 en Linux 3.10.

Arseniy Alekseyev
fuente