Marcas de tiempo de archivos de Linux explicadas con ejemplos

Este tutorial explica los tipos de marcas de tiempo de archivos de Linux y cómo ver y cambiar las marcas de tiempo de un archivo usando touch Comando con ejemplos.

Una breve introducción a las marcas de tiempo de los archivos de Linux

En Linux y Unix en general, cada archivo tiene tres tipos de marcas de tiempo, a saber un momento (tiempo de acceso), mtime (tiempo de modificación) y ctime (cambio de hora). Como su nombre lo indica, las marcas de tiempo se utilizan para averiguar cuándo se accedió, modificó y cambió un archivo.

La marca de tiempo de la hora de acceso (o atime para abreviar) es la última vez que se leyó un archivo. Por ejemplo, es posible que haya abierto el archivo. Es posible que algún otro programa o una máquina remota haya accedido al archivo. Es posible que haya leído el contenido de un archivo mediante un comando (p. ej. cat comando), o un programa (por ejemplo, gedit, vim, etc.). El archivo no se edita ni modifica. Solo ha sido accedido por usted o algún otro usuario desde un sistema remoto.

La marca de tiempo de la hora de modificación (o mtime) indica la última vez que se modificó un archivo (o directorio). En otras palabras, mtime indica la hora en que se modificó el contenido de un archivo. Por ejemplo, es posible que haya agregado algo en el archivo o eliminado algo del archivo, o que haya modificado el contenido del archivo.

Una marca de tiempo de tiempo de cambio (o ctime) muestra la última vez que se cambió el contenido del archivo o los metadatos del archivo (es decir, los atributos del archivo, como la propiedad del archivo, los permisos del archivo o el grupo).

En resumen,

  • atime – indica la hora de la última acceso para archivar para la lectura de contenidos.
  • mtime – indica la hora de la última modificación para archivar contenidos.
  • ctime – indica la hora de la última cambiar al contenido del archivo o metadatos del archivo (propietario, grupo o permisos).

Las marcas de tiempo pueden ser útiles en varias situaciones. Aquí hay algunos casos de uso para las marcas de tiempo:

  • Encuentre y ordene archivos según el tiempo de acceso o modificación.
  • Busque y elimine archivos que tengan más de X días. Útil para limpiar archivos antiguos en su disco duro.
  • Compruebe cuándo se cambió un archivo de configuración.
  • Verificar si se accedió a un archivo.
  • Verificar si se actualizó un directorio.
  • Encuentra archivos anteriores o posteriores a X días.

Ver marcas de tiempo de archivos de Linux con stat y ls comandos

Podemos ver las marcas de tiempo del archivo en Linux usando stat mando. De acuerdo con las páginas del manual, el stat El comando muestra el estado del archivo o del sistema de archivos en Linux. El comando stat es parte del GNU Coreutilsasí que no nos molestemos en instalarlo.

Ahora, revisemos las marcas de tiempo de un archivo de texto llamado ostechnix.txt utilizando stat mando:

$ stat ostechnix.txt

Salida de muestra:

  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -
Ver marcas de tiempo de archivos de Linux con el comando stat

Las últimas tres líneas del resultado anterior muestran la hora de acceso, la hora de modificación y las marcas de tiempo de cambio, respectivamente. Cuando acabamos de crear un nuevo archivo, todas las marcas de tiempo son las mismas.

¿Notaste la línea “Birth:” al final de la salida? Indica la marca de tiempo de creación del archivo. El estándar POSIX no define una marca de tiempo para la creación de archivos. Algunos sistemas de archivos (por ejemplo, ext4, JFS, Btrfs) almacenan este valor, pero actualmente no hay una API del kernel de Linux para acceder a él Entonces, vemos un guión “-” en lugar de una marca de tiempo en la línea “Nacimiento:”.

También puede obtener las marcas de tiempo atime, mtime y ctime individualmente usando ls mando.

Para ver la marca de tiempo de la hora de modificación (mtime), utilice ls -l mando:

$ ls -l ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Para ver la marca de tiempo de la hora de cambio (ctime), ejecute ls -lc mando:

$ ls -lc ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Aquí el c El indicador se utiliza para mostrar la hora del último cambio en los metadatos o atributos del archivo.

Ver la marca de tiempo de la hora de acceso (atime) con ls -lu mando:

$ ls -lu ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Aquí el u indicador muestra la hora del último acceso al archivo.

Ver marcas de tiempo de archivos de Linux con el comando ls

Cambie las marcas de tiempo de los archivos de Linux con touch mando

los touch El comando se usa para cambiar las marcas de tiempo del archivo, así como para crear archivos nuevos y vacíos en Linux. Al igual que stat comando, el touch El comando también es parte de GNU coreutilspor lo que tampoco es necesario instalarlo.

Antes de cambiar las marcas de tiempo, obtengamos las marcas de tiempo actuales del archivo llamado ostechnix.txt para referencia:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Como puede ver en el resultado anterior, el archivo ostechnix.txt se accedió. modificado y cambiado en la misma fecha y hora, es decir, 11 de noviembre de 2020 a las 17:31:01.

Cambiemos las marcas de tiempo de este archivo usando touch comando como a continuación:

$ touch ostechnix.txt

El comando anterior cambiará todas las marcas de tiempo (es decir, atime, mtime y ctime) a la hora actual de su computadora.

Ahora echemos un vistazo a las marcas de tiempo del archivo con stat mando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:39:59.430610787 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:39:59.430610787 +0530
 Birth: -
Cambie las marcas de tiempo de los archivos de Linux usando el comando táctilCambie las marcas de tiempo de los archivos de Linux usando el comando táctil

¿Ver? Todas las marcas de tiempo se han cambiado a la hora actual de mi sistema, es decir 2020-11-10 17:51:02.

También es posible cambiar las marcas de tiempo individuales por separado. Por ejemplo, puede cambiar solo la marca de tiempo de la hora de acceso (atime) con -a bandera:

$ touch -a ostechnix.txt

El comando anterior establecerá la marca de tiempo de la hora de acceso a la hora actual.

Ahora, verifique la marca de tiempo de ostechnix.txt archivo con stat mando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:43:46.555428706 +0530
 Birth: -
Cambie solo la marca de tiempo del tiempo de acceso con el comando táctilCambie solo la marca de tiempo del tiempo de acceso con el comando táctil

Como puede ver en el resultado anterior, la hora de acceso se cambia a la hora actual. El tiempo de cambio también se actualiza.

Para cambiar solo la marca de tiempo de la hora de modificación (mtime), utilice -m bandera:

$ touch -m ostechnix.txt

Verifique si el mtime ha cambiado con stat mando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:47:17.577722187 +0530
Change: 2020-11-11 17:47:17.577722187 +0530
 Birth: -
Cambie solo la marca de tiempo de la hora de modificación con el comando táctilCambie solo la marca de tiempo de la hora de modificación con el comando táctil

Ahora las marcas de tiempo mtime y ctime cambiaron mientras que atime permaneció como está.

Como habrás notado cuando cambiamos el tiempo de acceso o el tiempo de modificación, el ctime también se actualiza.

Si desea cambiar las marcas de tiempo atime y mtime simultáneamente, use -d opción.

$ touch -d "2020-11-11 17:50:01" ostechnix.txt

Verifique si las marcas de tiempo atime y mtime han sido cambiadas o no con stat mando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:50:01.000000000 +0530
Modify: 2020-11-11 17:50:01.000000000 +0530
Change: 2020-11-11 17:51:17.024213698 +0530
 Birth: -
Cambie las marcas de tiempo atime y mtime simultáneamente con el comando táctilCambie las marcas de tiempo atime y mtime simultáneamente con el comando táctil

Ahora hemos establecido el tiempo de acceso y el tiempo de modificación a un tiempo específico, es decir 2020-11-11 17:50:01. Y la marca de tiempo ctime también se actualizó a la hora actual.

También es posible usar una marca de tiempo específica en lugar de la hora actual con -t bandera también:

$ touch -t 2011111754 ostechnix.txt

Este comando establecerá las marcas de tiempo atime y mtime en 2020-11-11 17:54:00. Verifícalo con stat comando como a continuación:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:56:20.844405239 +0530
 Birth: -

Como ya se indicó, ctime se actualiza cuando se modifican atime y mtime. Si desea cambiar solo la marca de tiempo ctime, no hay un indicador dedicado en touch mando. Por lo tanto, debe cambiar manualmente el ctime modificando los metadatos o los atributos del archivo. Para examplevoy a asignar permiso ejecutable para ostchnix.txt archivo con chmod mando:

$ chmod +x ostechnix.txt

Compruebe si ctime se actualiza con stat mando:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -
Cambie solo la marca de tiempo de cambio con el comando táctilCambie solo la marca de tiempo de cambio con el comando táctil

¿Ver? La marca de tiempo ctime cambió, pero las horas atime y mtime no. Porque el archivo no se accede ni se modifica. Cambié el permiso del archivo solamente.

Cambie las marcas de tiempo de los archivos viendo, accediendo o modificando archivos

Como ya se indicó, la marca de tiempo atime se cambia cuando accedemos al archivo para leerlo. Intente acceder al archivo para leer usando cat comando y ver qué pasa.

$ cat ostechnix.txt
This is a text file.

Ahora verifique si la marca de tiempo del tiempo de acceso está actualizada:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

¿Ver? El valor atime ha cambiado ahora.

El mtime se actualiza cuando agregamos o eliminamos datos de un archivo.

Permítanme agregar una línea en el ostechnix.txt expediente:

$ echo "modify this file" >> ostechnix.txt

Compruebe las marcas de tiempo del archivo:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 18:01:49.072771458 +0530
Change: 2020-11-11 18:01:49.072771458 +0530
 Birth: -

Dado que el contenido del archivo cambió, su mtime y ctime cambiaron.

De forma predeterminada, si utiliza touch comando en un enlace simbólico (o enlace simbólico), también cambiará las marcas de tiempo del archivo al que se hace referencia.

Si solo desea cambiar la marca de tiempo de un enlace simbólico, use -h(--no-dereference) opción:

$ touch -h <path-to-symlink>

[Bonus Tip] Copiar marcas de tiempo de otro archivo

El comando táctil tiene una opción llamada -r, (--reference=) que le permite copiar marcas de tiempo de un archivo a otro.

El siguiente comando copiará las marcas de tiempo del archivo 1 al archivo 2.

$ touch -r file1.txt file2.txt

Para obtener más detalles, consulte las páginas man de stat y touch comandos:

$ man stat
$ man touch

Conclusión

En esta guía, hemos discutido tres tipos de marcas de tiempo de archivos de Linux, es decir, atime, mtime y ctime, cómo ver las marcas de tiempo de archivos usando stat y ls comandos y finalmente cómo cambiar esas marcas de tiempo de archivo con touch mando. Espero que esto ayude.

Related Posts