Creé un volumen lógico NTFS en mi sistema Linux para el almacenamiento de archivos de Windows porque quiero conservar la fecha de creación de mis archivos (probablemente los comprimiría en un archivo y luego los descomprimiría, aunque no tengo idea de si eso funcionará). ¿NTFS-3G guarda la fecha de creación de archivos en Linux? Si es así, ¿cómo accedo?
Al leer este hilo, el OP vincula la documentación sobre NTFS que proporciona un script de shell para encontrar la fecha de creación. Lo modifiqué en un intento de obtener los segundos del valor hexadecimal, pero creo que estoy haciendo algo mal:
#!/bin/sh
CRTIME=`getfattr -h -e hex -n system.ntfs_times $1 |
grep '=' | sed -e 's/^.*=(0x................).*$/1/'`
SECONDS=$(($CRTIME / 10000000))
echo `date --date=$SECONDS`
Respuesta aceptada:
Desde https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimes,
Un archivo NTFS está calificado por un conjunto de cuatro marcas de tiempo "que representan el número de intervalos de 100 nanosegundos desde el 1 de enero de 1601 (UTC)", aunque el UTC no se ha definido para años anteriores a 1961 debido a variaciones desconocidas de la rotación de la tierra.
Encontrará aún más información allí, que incluye:
Las versiones más nuevas de ntfs-3g exponen un ntfs.ntfs_crtime
y ntfs.ntfs_crtime_be
atributo.
Entonces:
getfattr --only-values -n system.ntfs_crtime_be /some/file |
perl -MPOSIX -0777 -ne '$t = unpack("Q>");
print ctime $t/10000000-11644473600'
ntfsinfo -F /file/in/ntfs /dev/fs-device
Con ntfs-3g más antiguo, esto debería funcionar:
getfattr --only-values -n system.ntfs_times /some/file |
perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'
O con herramientas GNU y precisión de subsegundos:
date '+%F %T.%N' -d "@$({ echo 7k
getfattr --only-values -n system.ntfs_times /some/file |
od -A n -N 8 -vt u8; echo '10000000/ 11644473600-p'; } |dc)"