GNU/Linux >> Tutoriales Linux >  >> Linux

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, atime (tiempo de acceso), mtime (hora 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 usando un comando (por ejemplo, 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 del último acceso para archivar para leer contenidos.
  • mtime - indica la hora de la última modificación al contenido del archivo.
  • ctime - indica la hora del último cambio al contenido del archivo o metadatos del archivo (propietario, grupo o permisos).

Las marcas de tiempo pueden ser útiles en varias situaciones. Estos son algunos casos de uso de las marcas de tiempo:

  • Encuentre y ordene archivos según el tiempo de acceso o modificación.
  • Encuentre 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.
  • Encuentre 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 dominio. 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 de GNU Coreutils , así que no nos molestemos en instalarlo.

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

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

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 comando.

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

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

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

Aquí, la c 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 comando:

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

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

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

El 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 coreutils , por 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 comando:

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

¿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 acceso a la hora actual.

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

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

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

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

$ touch -m ostechnix.txt

Verifique si el mtime ha cambiado con stat comando:

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

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 se han cambiado o no con stat comando:

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

Ahora hemos establecido la hora de acceso y la hora de modificación en una hora específica, 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íquelo 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 dominio. Por lo tanto, debe cambiar manualmente el ctime modificando los metadatos o los atributos del archivo. Por ejemplo, voy a asignar permiso ejecutable a ostchnix.txt archivo con chmod comando:

$ chmod +x ostechnix.txt

Compruebe si ctime se actualiza con stat comando:

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

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

Cambie las marcas de tiempo de los archivos visualizando, 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 de atime ha cambiado ahora.

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

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

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

Cambiar las marcas de tiempo del enlace simbólico

De forma predeterminada, si usa 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>

[Consejo adicional] Copie las 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 las marcas de tiempo de esos archivos con touch dominio. Espero que esto ayude.


Linux
  1. Comando de corte de Linux explicado con 6 ejemplos

  2. Ordenar comando en Linux con ejemplos

  3. Comando Traceroute de Linux, explicado con ejemplos

  4. Cómo usar el comando Vmstat en Linux explicado con ejemplos

  5. Marcas de tiempo de archivos en Linux:atime, mtime, ctime Explicación

Uso del comando Linux mv con ejemplos

Explicación del comando tee de Linux (con ejemplos)

Explicación del comando csplit de Linux (con ejemplos)

Comando de montaje de Linux con ejemplos

Comando gawk de Linux con ejemplos

Comando make de Linux con ejemplos