Solo sé que ls -t
y ls -f
proporciona una clasificación diferente de archivos y subdirectorios en un directorio.
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.?
Hay 3 tipos de "marcas de tiempo":
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.
La respuesta de echox es válida pero quiero agregar información sobre el tiempo de creación del archivo.
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).
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.