Saltar al contenido

Fecha de creacion de linux

enero 10, 2022
Fecha de creacion de linux

fecha de creación del archivo en linux

Los sistemas de archivos modernos de Linux, como ext4, Btrfs, XFS (v5 y posteriores) y JFS, almacenan la hora de creación del archivo (también conocida como hora de nacimiento), pero utilizan diferentes nombres para el campo en cuestión (crtime en ext4/XFS, otime en Btrfs y JFS). Linux proporciona la interfaz de llamada al sistema statx(2) para recuperar la hora de nacimiento del archivo para los sistemas de archivos que la soportan desde la versión 4.11 del kernel. (Así que incluso cuando se ha añadido soporte para la hora de creación a un sistema de archivos, algunos kernels desplegados no lo han soportado inmediatamente, incluso después de añadir soporte nominal para esa versión del sistema de archivos, por ejemplo, XFS v5).

Como Craig Sanders y Mohsen Pahlevanzadeh señalaron, stat sí soporta los especificadores de formato %w y %W para mostrar la hora de nacimiento del archivo (en formato legible por humanos y en segundos desde Epoch respectivamente) antes de la versión 8.31 de coreutils. Sin embargo, coreutils stat utiliza la llamada al sistema statx() cuando está disponible para recuperar la hora de nacimiento sólo desde la versión 8.31.

Antes de la versión 8.31 de coreutils stat accedía a la hora de nacimiento a través de get_stat_birthtime() proporcionada por gnulib (en lib/stat-time.h), que obtiene la hora de nacimiento de los campos st_birthtime y st_birthtimensec de la estructura stat devuelta por la llamada al sistema stat(). Mientras que, por ejemplo, los sistemas BSD (y en extensión OS X) proporcionan st_birthtime a través de stat, Linux no lo hace. Esta es la razón por la que stat -c ‘%w’ file da como resultado – (indicando una hora de creación desconocida) en Linux antes de coreutils 8.31 incluso para sistemas de archivos que sí almacenan la hora de creación internamente.

unix obtiene la fecha de creación del archivo

La incapacidad de stat para mostrar la hora de creación se debe a la limitación de la llamada al sistema stat(2), cuya estructura de retorno no incluye un campo para la hora de creación. Sin embargo, a partir de Linux 4.11 (es decir, 17.10 y posteriores*), está disponible la nueva llamada al sistema statx(2), que sí incluye la hora de creación en su estructura de retorno.

Desafortunadamente, no es fácil llamar a las llamadas del sistema directamente en un programa C. Normalmente, glibc proporciona una envoltura que facilita el trabajo, pero glibc solo añadió una envoltura para statx(2) en agosto de 2018 (versión 2.28, disponible en 18.10). El propio comando stat obtuvo soporte para statx(2) solo en GNU coreutils 8.31 (publicado en marzo de 2019), sin embargo, incluso Ubuntu 20.04 solo tiene coreutils 8.30.

Pero no creo que esto sea retrocedido a las versiones LTS incluso si obtienen, o ya están en, kernels o glibcs más nuevos. Por lo tanto, no espero que las estadísticas en cualquier versión LTS actual (16.04, 18.04 o 20.04) impriman el tiempo de creación sin intervención manual.

Para los sistemas más antiguos, por suerte, @whotwagner escribió un programa de ejemplo en C que muestra cómo usar la llamada al sistema statx(2) en sistemas x86 y x86-64. Su salida tiene el mismo formato que el predeterminado de stat, sin ninguna opción de formato, pero es sencillo modificarlo para imprimir sólo la hora de nacimiento.

tiempo de creación de archivos xfs

La incapacidad de stat para mostrar el tiempo de creación se debe a la limitación de la llamada al sistema stat(2), cuya estructura de retorno no incluye un campo para el tiempo de creación. Sin embargo, a partir de Linux 4.11 (es decir, 17.10 y posteriores*), está disponible la nueva llamada al sistema statx(2), que sí incluye el tiempo de creación en su estructura de retorno.

Desafortunadamente, no es fácil llamar a las llamadas del sistema directamente en un programa C. Normalmente, glibc proporciona una envoltura que facilita el trabajo, pero glibc solo añadió una envoltura para statx(2) en agosto de 2018 (versión 2.28, disponible en 18.10). El propio comando stat obtuvo soporte para statx(2) solo en GNU coreutils 8.31 (lanzado en marzo de 2019), sin embargo, incluso Ubuntu 20.04 solo tiene coreutils 8.30.

Pero no creo que esto sea retrocedido a las versiones LTS incluso si obtienen, o ya están en, kernels o glibcs más nuevos. Por lo tanto, no espero que las estadísticas en cualquier versión LTS actual (16.04, 18.04 o 20.04) impriman el tiempo de creación sin intervención manual.

Para los sistemas más antiguos, por suerte, @whotwagner escribió un programa de ejemplo en C que muestra cómo usar la llamada al sistema statx(2) en sistemas x86 y x86-64. Su salida tiene el mismo formato que el predeterminado de stat, sin ninguna opción de formato, pero es sencillo modificarlo para imprimir sólo la hora de nacimiento.

crtime linux

La aproximación más cercana a la «fecha de creación» es el miembro st_ctime de la estructura stat, pero éste registra la última vez que el inodo cambió. Si creas el archivo y nunca modificas su tamaño o permisos, eso funciona como tiempo de creación. De lo contrario, no hay registro de cuándo se creó el archivo, al menos en los sistemas Unix estándar.

Observe el campo st_birthtimespec. Observe también que todos los tiempos están en valores de struct timespec, por lo que hay una sincronización de sub-segundos (tv_nsec da una resolución de nanosegundos). POSIX 2008 <sys/stat.h> requiere que el tiempo struct timespec se mantenga en los tiempos estándar; Darwin sigue eso.

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad