comando_stat_access_modify_change

This is an old revision of the document!


Entendiendo los timestamps de ficheros en Linux (Acceso / Modificación / Cambio / Creación)

Entender las diferentes marcas de tiempo de los ficheros en Linux es algo básico para su administración, ya que son usados por infinidad de comandos para poder filtrar y encontrar determinados archivos y carpetas.

stat fichero.pdf
  File: `fichero.pdf'
  Size: 921599          Blocks: 1800       IO Block: 4096   regular file
Device: 91a1h/37281d    Inode: 2728917     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-04-03 21:40:42.767849143 +0200
Modify: 2009-04-03 21:40:14.665837796 +0200
Change: 2009-05-15 16:41:42.727736900 +0200
 Birth: -

Access / Acceso (atime): Fecha del ultimo acceso, el cual puede ser realizado por las llamadas al sistema mknod(2), utimes(2) / utimensat(2) y read(2). Algunas distribuciones desactivan la actualización de esta información para evitar operaciones de entrada y salida (fstab: noatime,nodiratime,etc)

Modify / Modificación (mtime): Fecha de la última modificación, que pudo ser ocasionada por las llamadas sl sistema mknod(2), utimes(2) / utimensat(2) y write(2). Comandos como “stat” “ls -l” o “date -r” muestran la fecha de modificación de un fichero.

Change / Cambio (ctime): Fecha de la ultima modificación del inodo (metadatos), ocasionado por las llamada al sistema chmod(2), chown(2), link(2), mknod(2), rename(2), unlink(2), utimes(2) / utimensat(2) y write(2).

Birth / Creación (crtime): La fecha de creación por ahora no se puede visualizar (Birth: -) con stat en sistemas con Linux (leer). Pero se puede utilizar debugfs para obtener dicha fecha de creación, veamos un ejemplo usando LVM.

debugfs -R 'stat /home/maria/fichero' /dev/mapper/Volgroup00-lv_root
debugfs 0.92.13 (15-May-2008)
Inode: 269835   Type: regular    Mode:  0644   Flags: 0x80000
Generation: 2264140096    Version: 0x00000000:00000001
User:     0   Group:     0   Size: 0
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 0
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x57225282:ad2d99c0 -- Thu Apr 28 20:12:18 2009
 atime: 0x57225195:32e9e720 -- Thu Apr 28 20:08:21 2009
 mtime: 0x57225282:ad2d99c0 -- Thu Apr 28 20:12:18 2009
crtime: 0x57225195:32e9e720 -- Thu Apr 28 10:01:21 2008
Size of extra inode fields: 32
EXTENTS:

Usando el inodo del fichero / directorio en vez de la ruta al fichero (Versiones antiguas de debugfs).

ls -i /home/maria/fichero 
267850 /home/maria/fichero
 
debugfs -R 'stat <267850>' /dev/mapper/Volgroup00-lv_root

Uso del comando ls para ordenar y visualizar las fechas de acceso, modificación y cambios de ficheros / directorios.

ls -ltu  # Visualiza y ordena por la fecha del último acceso (atime).
ls -lt   # Visualiza y ordena por fecha de la ultima modificación (mtime).
lt -ltc  # Visualiza y ordena por fecha del último cambio (ctime).
# NOTA: Sin la "t", usando solo la opción "l", siempre se ordena por nombre. (-h es recomendable para leer el mejor el tamaño de los archivos con ls)

Modificar las fechas de acceso / modificación de un fichero con touch (man touch).

 # Modifica los estados de acceso (-a), modificación (-m) por la fecha actual.
touch fichero
# NOTA: Se puede utilizar indistintamente -a, --time=atime, --time=access, --time=use
 
# Copiar las marcas de tiempo de otro fichero.
touch fichero -r otro_fichero.txt # Se puede utilizar -a y -m si solo interesa copiar "atime" o "mtime".
 
# Si el archivo llamado "fichero" existe, actualiza los timestamp que tenga, en caso contrario no crea el fichero.
touch -c fichero
 
# Especificar una fecha en concreto (-t / -d).
touch -t 201408121510.59 fichero        # 12-08-2014 a las 15:10:59
touch -d 11am fichero                   # 11 de la mañana de hoy.
touch -d "last fortnight" fichero       # 15 días atrás.
touch -d "yesterday 6am" fichero        # Ayer a las 6 de la mañana.
touch -d "380 days ago 12:00" fichero   # Hace 380 días a las 12:00.
touch -d "tomorrow 02:00" fichero       # Ayer a las 02:00.
touch -d "5 Nov" fichero                # 5 de Noviembre de este año.

NOTA: El timestamp de “Change” (Cambio) es modificado a la vez que se cambia la fecha de último acceso o de la última modificación.

comando_stat_access_modify_change.1608933466.txt.gz · Last modified: 2020/12/25 22:57 by 127.0.0.1