it-swarm-es.tech

marca de tiempo, hora de modificación y hora creada de un archivo

Solo sé que ls -t y ls -f proporciona una clasificación diferente de archivos y subdirectorios en un directorio.

  • ¿Cuáles son las diferencias entre la marca de tiempo, la hora de modificación y la hora de creación de un archivo?
  • ¿Cómo obtener y cambiar este tipo de información mediante comandos?
  • ¿En términos de qué tipo de información dice la gente que un archivo es "más nuevo" que el otro?
  • ¿Qué tipo de cambio de información no hará que el archivo sea diferente?

Por ejemplo, vi que alguien escribió:

Por defecto, el programa rsync solo busca ver si los archivos son diferentes en tamaño y marca de tiempo. No le importa qué archivo es más nuevo, si es diferente, se sobrescribe. Puede pasar el indicador '--update' a rsync, lo que hará que omita los archivos en el destino si son más nuevos que el archivo en la fuente, pero solo mientras sean del mismo tipo de archivo. Esto significa que si, por ejemplo, el archivo de origen es un archivo normal y el destino es un enlace simbólico, el archivo de destino se sobrescribirá, independientemente de la marca de tiempo.

En una nota al margen, ¿el tipo de archivo aquí significa solo archivo normal y enlace simbólico, no el tipo como pdf, jpg, htm, txt, etc.?

108
Tim

Hay 3 tipos de "marcas de tiempo":

  • Acceso: la última vez que se leyó el archivo
  • Modificar: la última vez que se modificó el archivo (se modificó el contenido)
  • Cambiar: la última vez que se modificaron los metadatos del archivo (por ejemplo, permisos)

Para mostrar esta información, puede usar stat que es parte de los coreutils.

stat también le mostrará más información como el dispositivo, los inodos, los enlaces, etc.

Recuerde que este tipo de información depende en gran medida del sistema de archivos y las opciones de montaje. Por ejemplo, si monta una partición con la opción noatime, no se escribirá información de acceso.

Una utilidad para cambiar las marcas de tiempo sería touch. Hay algunos argumentos para decidir qué marca de tiempo cambiar (por ejemplo, -a para el tiempo de acceso, -m para el tiempo de modificación) e influir en el análisis de una nueva marca de tiempo dada. Ver man touch para más detalles.

touch puede ser útil en combinación con cp -u ( "copiar solo cuando el archivo SOURCE es más nuevo que el archivo de destino o cuando falta el archivo de destino" ) o para la creación de un marcador vacío archivos.

146
echox

La respuesta de echox es válida pero quiero agregar información sobre el tiempo de creación del archivo.

Soporte de sistema de archivos

Algunos sistemas de archivos admiten una entrada adicional en el inodo con respecto al tiempo de creación (o tiempo de nacimiento). Sé que ext4 admite esta función y también JFS y BTRFS .

Sin embargo, la mayoría de las herramientas y API aún no se han actualizado para leer esta información adicional. Entonces, aunque podría estar allí, no es accesible.

Por ejemplo, en Ubuntu 12.04 LTS obtengo lo siguiente para un archivo que creé hoy:

$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest 
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
 Birth: -
$ Sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
 ctime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
 atime: 0x4fcdee98:42b417dc -- Tue Jun  5 13:33:44 2012
 mtime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun  5 13:32:22 2012
[...]

Puede ver que la función estadística más nueva tiene un campo de nacimiento, aunque la salida parece incorrecta. Y a través de debugfs podemos obtener la información (crtime ya que estoy en el sistema de archivos ext4).

soporte de statx

Ahora hay desde Kernel 4.11 una nueva llamada al sistema statx , además de un mejor soporte de Y2038 o sistemas de archivos de red, también trae algunas características adicionales como btime o hora de nacimiento ( tiempo de creación) acceso. El soporte para ext4 debería estar en la misma versión del kernel 4.11.

Ha habido parches para agregar soporte a esta nueva llamada al sistema en versiones posteriores de Kernel: p. BTRFS y F2FS en Kernel 4.13, SMB3 en 4.14, GFS2 en 4.15, NFS en 4.16, etc.

El próximo glibc proporcionará una llamada de función para consultar esta interfaz (ver Noticias de Phoronix sobre el soporte de glibc statx ). Por lo tanto, podemos esperar soporte para esta característica en el espacio del usuario muy pronto.

38
Huygens