Durante mucho tiempo, Linux no se ha molestado con las fechas de creación de archivos porque ninguno de los sistemas de archivos que usaba comúnmente los admitía. Sin embargo, ahora, 2 sistemas de archivos de uso común (NTFS y ext4) registran ambas fechas de creación de archivos.
El stat
comando, sin embargo, todavía sale Birth: -
en un sistema de archivos ext4, aunque podemos ver que ext4 ha almacenado la fecha de creación del archivo usando debugfs -R 'stat <inode_number>' /dev/file_device
.
Cuando analicé por qué es así, vi que alguien más ya había presentado un informe de error al respecto, y la respuesta se vincula a un problema ascendente que simplemente dice "actualmente no hay una interfaz de kernel de Linux para obtener esa información [archivo fecha de creación]". Me parece notable que aparentemente este sigue siendo el caso, ya que la gente ha estado solicitando que stat
muestre esta información durante años (¡y stat
genera un Birth
campo, aunque aparentemente todavía no lo admite! ¿Lo agregaron anticipadamente?)
Entonces, ¿sigue siendo cierto que actualmente no hay una interfaz de kernel de Linux para obtener la fecha de creación del archivo? ¿Hay algún plan para implementar esto alguna vez?
fuente
debugfs
.ZFS
También registra el tiempo de creación de archivos y permite recuperarlos mediante atributos extendidos.Respuestas:
EDITAR: Buenas noticias,
statx()
se ha fusionado, por lo que debería estar disponible en la versión 4.11.El trabajo xstat (), actualmente statx (), se revisó en 2016.
El proceso fue un poco más disciplinado esta vez (menos bikeshedding, acuerdo para eliminar atributos controvertidos, ya que siempre se pueden agregar más adelante). Desafortunadamente, todavía hubo objeciones a la interfaz exacta y no he visto más referencias recientes.
fuente
Por lo que puedo decir (perdón por un montón de enlaces, memoria y Google, nada lo suficientemente coherente como para enumerar aquí como referencia), nunca fue porque los sistemas de subrayado no admitían atributos de tiempo de creación, sino porque ninguno de ellos podía siquiera Estoy de acuerdo en que era una característica útil.
Ver http://www.pathname.com/fhs/pub/fhs-2.3.html
POSIX presenta tres marcas de tiempo. Ninguno de ellos es tiempo de creación.
Si no recuerdo mal, el argumento fue algo como:
Ahora, mucho de esto es memoria y leer algunas listas de correo antiguas. Realmente tampoco me sentí central en los argumentos. Estaba en una lista de correo debido a un poco de trabajo de rodaje en un controlador gordo para un sistema Linux incorporado. Menciono eso porque seguramente hay más fuentes autorizadas que mi memoria de algo que solo me importaba.
Recuerdo que el gran problema es una combinación del hecho de que nadie podría llegar a un buen caso de uso, nadie podría ponerse de acuerdo sobre cómo manejar el campo para los otros 40 sistemas de archivos de uso común que no admiten el tiempo de creación, e incluso crear un nombre para el campo se convirtió en un debate masivo.
fuente
debugfs
leer el campo de la imagen del disco no es una gran interfaz , y de todos modos necesitará acceso privilegiado.La hora de nacimiento es en varios sistemas de archivos nativos de Linux, no solo ext4.
Desde la versión 4.11 del kernel de Linux (abril de 2017), hay una nueva
statx()
llamada al sistema para recuperarlo. Sin embargo, la función de contenedor correspondiente no ha sido añadido a la GNU libc todavía (a partir del 26/06/2018. 2019 edición añade ahora en 2,28), y herramientas como GNUstat
,ls
,find
no se han actualizado para usarlo ( 2019-08- 22 editar GNUstat
en sistemas GNU / Linux con glibc 2.28 o superior lo admite desde coreutils 8.31)Sin embargo, podría hacerlo
perl
con algo como:Si
syscall.ph
no tieneSYS_statx
, también puede codificarlo. Es 332 en arquitecturas amd64. O tratar:Ahora ese tiempo de nacimiento rara vez es útil. No es la antigüedad de los datos en el archivo (los datos se escriben en los archivos después de haber sido creados), ni necesariamente el momento en que el archivo apareció con ese nombre en un directorio (podría haberse creado con un nombre diferente y renombrado o vinculado allí y el contenido o los atributos se han cambiado varias veces en el medio).
fuente
NFSv4
, necesitaría admitir atributos extendidos y existe una posible entradacrtime
en los atributos extendidos. Compruebe, por ejemplo, lals.c
fuente de Solaris que imprime el tiempo de creación del archivols -l -% crtime
.statx()
.statx()
Aún no existe una utilidad estándar para la interfaz con Linux, pero la recuperación de atributos extendidos ha sido compatible durante décadas. Consulte ¿Cómo obtengo la fecha de creación de un archivo en un volumen lógico NTFS?openat(fd, ".", O_RDONLY|O_XATTR)
.