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.