GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Wie erhalte ich das Erstellungsdatum einer Datei auf einem logischen Ntfs-Volume?

Ich habe auf meinem Linux-System ein logisches NTFS-Volume für die Windows-Dateispeicherung erstellt, weil ich das Erstellungsdatum meiner Dateien beibehalten möchte (ich würde sie wahrscheinlich in ein Archiv komprimieren und dann entpacken, obwohl ich keine Ahnung habe, ob das funktionieren würde). Speichert NTFS-3G das Erstellungsdatum von Dateien unter Linux? Wenn ja, wie greife ich darauf zu?

Beim Lesen dieses Threads enthält die OP-Links-Dokumentation zu NTFS, die ein Shell-Skript zum Ermitteln des Erstellungsdatums bereitstellt. Ich habe es geändert, um die Sekunden aus dem Hex-Wert zu bekommen, aber ich glaube, dass ich etwas falsch mache:

#!/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`

Akzeptierte Antwort:

Von https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimes,

Eine NTFS-Datei wird durch einen Satz von vier Zeitstempeln qualifiziert, „die die Anzahl der 100-Nanosekunden-Intervalle seit dem 1. Januar 1601 (UTC) darstellen“, obwohl UTC für Jahre vor 1961 wegen unbekannter Variationen der Erdrotation nicht definiert wurde.

Dort finden Sie noch mehr Informationen, darunter:

Neuere Versionen von ntfs-3g legen eine ntfs.ntfs_crtime offen und ntfs.ntfs_crtime_be Attribut.

Also:

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

Mit älterem ntfs-3g sollte das funktionieren:

getfattr --only-values -n system.ntfs_times /some/file |
  perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'

Oder mit GNU-Tools und einer Genauigkeit von weniger als einer Sekunde:

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)"

Linux
  1. So ändern Sie die Identität eines Linux-Systems

  2. Wie überprüfe ich das Installationsdatum Ihres Linux-Betriebssystems?

  3. Linux – Wie finde ich das Erstellungsdatum der Datei?

  4. Linux:Wie bekomme ich alle Anmeldeprotokolle vom System?

  5. Linux – Wie oft wird das Proc-Dateisystem unter Linux aktualisiert?

So formatieren Sie Festplattenpartitionen unter Linux

Einführung in das Linux-Dateisystem

So erhalten Sie die Größe eines Verzeichnisses in Linux

So erhalten Sie den Dateinamen aus dem vollständigen Pfad in Linux

So mounten Sie eine NTFS-Festplatte unter Linux

So verwenden Sie den fd-Befehl auf einem Linux-System