Vytvořil jsem logický svazek NTFS na svém systému Linux pro ukládání souborů Windows, protože chci zachovat datum vytvoření mých souborů (pravděpodobně bych je zabalil do archivu a pak je rozbalil, i když netuším, zda by to fungovalo). Ukládá NTFS-3G datum vytvoření souborů v systému Linux? Pokud ano, jak se k němu dostanu?
Při čtení tohoto vlákna OP odkazuje na dokumentaci NTFS, která poskytuje skript shellu pro zjištění data vytvoření. Upravil jsem to ve snaze získat sekundy z hexadecimální hodnoty, ale věřím, že dělám něco špatně:
#!/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`
Přijatá odpověď:
Z https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimes,
Soubor NTFS je kvalifikován sadou čtyř časových razítek „představujících počet 100nanosekundových intervalů od 1. ledna 1601 (UTC)“, ačkoli UTC nebylo definováno léta před rokem 1961 kvůli neznámým variacím rotace Země.
Najdete tam ještě více informací, včetně:
Novější verze ntfs-3g odhalují ntfs.ntfs_crtime
a ntfs.ntfs_crtime_be
atribut.
Takže:
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
Se staršími ntfs-3g by to mělo fungovat:
getfattr --only-values -n system.ntfs_times /some/file |
perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'
Nebo s nástroji GNU a přesností na méně než sekundy:
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)"