¿Cuándo «modificado» no significa «cambiado»? Cuando hablamos de las marcas de tiempo del archivo Linux. En este tutorial, explicaremos cómo los actualiza el sistema y cómo cambiarlos usted mismo.
La diferencia entre atime, mtime y ctime
Cada archivo de Linux tiene tres marcas de tiempo: marca de tiempo de acceso (atime), marca de tiempo modificada (mtime) y marca de tiempo modificada (ctime).
La marca de tiempo de acceso es el momento en que se leyó el archivo por última vez. Esto significa que alguien usó el programa para mostrar el contenido del archivo o leer algunos valores de él. Nada ha sido editado o agregado al archivo. Hay referencias a los datos, pero no hay cambios.
La marca de tiempo modificada significa cuándo se modificó por última vez el contenido del archivo. Un programa o proceso editado o manipulado el archivo.»Modificado» significa que se cambió o eliminó algo dentro del archivo, o se agregaron nuevos datos.
Las marcas de tiempo cambiadas no se refieren a los cambios realizados en el contenido del archivo. Más bien, son momentos en que se cambiaron los metadatos relacionados con el archivo. Por ejemplo, los cambios en los permisos de archivo actualizarán la marca de tiempo modificada.
El sistema estándar de archivos Linux Ext4 también asigna espacio para una marca de tiempo de creación de archivos en las estructuras del sistema de archivos internos, pero esto aún no se ha implementado. A veces esta marca de tiempo está poblada, pero no puede confiar en los valores en ella.
Anatomía de una marca de tiempo
Las marcas de tiempo de Linux contienen un número, no una fecha y hora. Este número es el número de segundos desde la era de Unix, que fue la medianoche (00: 00: 00: 00) el 1 de enero de 1970 Tiempo universal coordinado (UTC). Los segundos de salto se ignoran en las marcas de tiempo de Linux, por lo que no son análogos al tiempo real.
Cuando Linux necesita mostrar una marca de tiempo, traduce el número de segundos en fecha y hora. Esto hará que sea más fácil de entender para las personas. La ubicación y la zona horaria donde se encuentra la computadora que ve el archivo determina la conversión del número de segundos hasta la fecha y la hora. Esto también asegura que el mes esté en el idioma correcto.
Entonces, ¿cuántos segundos se pueden almacenar en una marca de tiempo? Mucho – 2, 147, 483, 647 para ser exactos. Ese es un gran número, pero ¿es suficiente? Si agrega eso a la era de Unix, y luego lo traduce hasta la fecha y la hora, obtendrá el martes 19 de enero de 2038 a las 03:14:07. Sin embargo, necesitaremos un esquema diferente para las marcas de tiempo antes de eso.
Cómo hacer una copia de seguridad de los juegos de Steam en Linux
Visualización de marcas de tiempo
Cuando usa el parámetr o-l (lista larga) con LS, como se muestra a continuación, puede ver la marca de tiempo modificada:
L S-L DP. C
Si desea ver la marca de tiempo de acceso, use el parámetr o-lu (tiempo de acceso), por ejemplo:
l s-lu dp. c
Finalmente, para ver la marca de tiempo de cambio, puede usar el parámetr o-lc (tiempo de cambio); introduzca la siguiente:
L S-LC DP. C
Las marcas de tiempo anteriores muestran que el contenido del archivo se modificaron por última vez el 21 de abril de 2019. Los accesorios y las marcas de tiempo modificadas son idénticos porque el archivo se copió de otra computadora a esta el 20 de enero de 2020, y ambas marcas de tiempo se actualizaron en esotiempo.
Para ver todas las marcas de tiempo a la vez, use el comando STAT de la siguiente manera:
estadística dp. c
Las zonas horarias se enumeran en la parte inferior de la pantalla. Como puede ver, tienen un componente de fracciones muy precisos de segundos. Al final de cada marca de tiempo, también ve a-0500 o-0400.
Estas son las compensaciones de la zona horaria. El sistema de archivos registra las marcas de tiempo en formato UTC y las convierte en la zona horaria local cuando se muestra con STAT. La computadora que utilizamos para investigar este artículo se establece como si estuviera en la zona de tiempo estándar oriental (EST) de los Estados Unidos.
Esta zona horaria está cinco horas detrás de UTC cuando EST está vigente. Sin embargo, cuando la hora del día oriental (EDT) está vigente, está cuatro horas detrás de UTC. En abril de 2019, cuando se cambió la marca de tiempo, EDT estaba vigente. Es por eso que las dos marcas de tiempo tienen un desplazamiento de cinco horas y la marca de tiempo modificada tiene un desplazamiento de cuatro horas.
Las compensaciones y las zonas horarias no se almacenan en ninguna parte. No hay un descriptor o espacio del sistema de archivos para almacenar estos valores. Debe calcularlos sobre la marcha, utilizando la marca de tiempo (que siempre está en formato UTC), la zona horaria local de la computadora en la que se muestra el archivo y si el tiempo de ahorro de la luz del día estaba vigente.
También ves la marca de tiempo de «nacimiento», que está reservada para la fecha en que se creó el archivo. Esto no se implementa, y se muestra un guión «-» en lugar de la marca de tiempo.
Cambiar las marcas de tiempo
Puede cambiar las marcas de tiempo en un archivo si lo desea. Puede usar el comando touch para cambiar el acceso o las marcas de tiempo modificadas, o ambas:
touc h-a dp. c
Para establecer una nueva marca de tiempo de acceso, debe usar el parámetr o-a (tiempo de acceso). Este comando establece la marca de tiempo de acceso a la hora de la computadora actual:
estadística dp. c
La marca de tiempo de acceso ha cambiado como se esperaba. Sin embargo, la marca de tiempo modificada también se actualizó; esto es normal.
Para cambiar la marca de tiempo cambiada, puede usar el parámetr o-m (tiempo de cambio):
touc h-m dp. c
estadística dp. c
Este tiempo cambió y se han actualizado marcas de tiempo modificadas.
Cómo instalar Linux desde un teléfono Android usando DriveDroid
Puede usar el parámetr o-d (fecha) si desea cambiar las marcas de tiempo de acceso y las marcas de tiempo modificadas al mismo tiempo. También puede especificar la hora y la fecha: no se limita a cambiar las marcas de tiempo al presente.
Usaremos el siguiente comando para establecer las marcas de tiempo de acceso y cambiar a 10:30:45 el 15 de enero de 2020:
touc h-d "2020-01-15 10:30:45" dp. c
estadística dp. c
Ahora hemos establecido las marcas de tiempo de acceso y cambio a una fecha en el pasado. La marca de tiempo modificada también se ha actualizado al tiempo de computadora actual.
También puede usar el parámetr o-r (enlace), como se muestra a continuación, si desea establecer la marca de tiempo de un archivo igual a la marca de tiempo de otro:
Touch dp. c-r dice_words. sl3
estadística dp. c
Y luego casi volvemos a donde comenzamos, con una mezcla de marcas de tiemp o-0400 y-0500.
Hagamos algo que solo afecte la marca de tiempo modificada. Usaremos el comando CHMOD para otorgar los permisos de ejecución ejecutables a todos los usuarios:
chmod +x dp
estadística DP
La marca de tiempo modificada fue la única que se actualizó. Esto se debe a que el archivo en sí no se había cambiado, no se le había accedido ni modificado. Sin embargo, se cambiaron los metadatos sobre el archivo.
Cómo el sistema de archivos actualiza las marcas de tiempo
Cuando se monta un sistema de archivos, puede usar parámetros para especificar cómo se debe operar o manejar ese sistema de archivos. Estos se almacenan en el archivo / etc / fstab, que se lee y procesa en el momento de la arranque. También puede establecer parámetros para especificar el esquema que deben usar para actualizar la marca de tiempo de acceso.
Las siguientes son algunas de las opciones más comunes:
StrictAtime: este parámetro actualiza la marca de tiempo de acceso al archivo cada vez que se accede al archivo. Este enfoque tiene una sobrecarga, pero algunos servidores pueden beneficiarse de este esquema. Tiene poco mérito en una computadora de escritorio o computadora portátil. Noatime (sin atime): esta opción deshabilita por completo la actualización de las marcas de tiempo de acceso para archivos y directorios. Sin embargo, las marcas de tiempo modificadas aún se actualizarán. Nodiratime (sin Dir atime): esta opción permite actualizar las marcas de tiempo de acceso para que los archivos se actualicen, pero los deshabilitan para directorios. Relatime (Relatime): este parámetro solo actualiza una marca de tiempo de acceso si era anterior a 24 horas, o el anterior era mayor que la marca de tiempo modificada o modificada actualmente. Esto proporciona un buen equilibrio entre actualizar las marcas de tiempo de acceso con demasiada frecuencia o no actualizarse en absoluto.
Cómo transmitir video a Chromecast en Linux a través de la línea de comandos
Echemos un vistazo al archivo / etc / fstab para esta computadora y veamos qué configuración se establece:
menos /etc /fstab
El archivo / etc / fstab se muestra para nosotros, como se muestra a continuación.
Aquí están el contenido del archivo sin el carenado:
# /etc /fstab: información del sistema de archivos estáticos.# # # Use 'blkid' para imprimir el identificador universalmente único para un dispositivo #; Esto puede usarse con UUID = como una forma más robusta de nombrar dispositivos # que funcione incluso si los discos se agregan y eliminan. Ver FSTAB (5).# ## /estaba en /dev /sda1 durante la instalación UUID = 4A143D08-8695-475B-8243-B13B56050550FC2 /EXT4 Errores = Remount-Ro 0 1 /SwapFile None Swap SW 0 0 0
Solo hay dos entradas aquí, y una de ellas es el archivo de intercambio, que podemos ignorar. El otro está montado en la raíz del sistema de archivos ( /) y estaba en / dev / sda1 durante la instalación. Esta es la primera partición en el primer disco duro, y contiene el sistema de archivos Ext4.
La única opción que se le pasó es errores = REDENT-RO, que le dice al sistema operativo que vuelva a montar este sistema de archivos como solo lectores si se producen errores al intentar montarlo como un sistema de archivos de lectura-escritura.
Entonces, no se menciona cómo se manejará la marca de tiempo de acceso. Profundicemos y veamos qué / Proc / Mounts puede decirnos. Enrutaremos la salida de / proc / se monta a través de GREP. Nuestra cadena de búsqueda será «SDA», la identificación del disco duro.
Cat /Proc /Mounts |Grep "SDA"
Ahora vemos las siguientes opciones:
RW: El sistema de archivos se montará como un sistema de archivos de lectura-escritura. Relatime: el sistema de archivos utilizará un esquema «Relatime» para actualizar las marcas de tiempo de acceso.
¿De dónde viene esto? Bueno, el esquema de relatime se usa en las siguientes situaciones:
Cuando se usa el parámetro predeterminado / etc / fstab. Cuando se usa el parámetro Relatime / Etc / FSTAB. Cuando el / etc / fstab no usa el parámetro de marca de tiempo de acceso y está utilizando el kernel de Linux 2. 6. 30 o más nuevo.
Nuestra entrada / etc / fstab para el sistema de archivos ext4 no incluye los parámetros de actualización de la marca de tiempo de acceso, por lo que Linux hizo la elección inteligente y usó relatime.
Las marcas de tiempo son importantes
Las marcas de tiempo nos dan una manera fácil de saber cuándo se accedió, modificó o cambió un archivo. Pero lo más importante, proporcionan una forma para el software de copia de seguridad y sincronización para determinar qué archivos deben copiarse.
La capacidad de manipular marcas de tiempo resultará útil cuando necesite obligar a un programa a incluir o ignorar un archivo o un conjunto de archivos.