Welche Dateisysteme unter Linux speichern die Erstellungszeit?

32

Gibt es unter Linux (bekannte, zuverlässige) Dateisysteme, die die Erstellungszeit von Dateien und Verzeichnissen in der i-node-Tabelle speichern?

Wenn ja, wird die "geänderte" Zeit durch die Erstellungszeit eines i-Knotens in einem stat-Aufruf ersetzt?

Franziskus
quelle
Es hat offenbar ein Weg , um die Datei Erstellungszeit in Linux zu bekommen , wenn die Datei auf einem ext4 - Dateisystem ist. Siehe: unix.stackexchange.com/a/131347/182996
kaartic

Antworten:

16

Das ext4- Dateisystem speichert die Erstellungszeit. stat -c %W myfilekann es dir zeigen.

Keith
quelle
6
Vielen Dank. In meinem System wird stat -c %W0 zurückgegeben (Erstellungszeit unbekannt), aber das ist eine andere Frage ...
Franziskus
1
Beachten Sie jedoch, dass der Wert für die Erstellungszeit aufgrund der Art und Weise, wie Dateien von vielen Programmen verarbeitet werden, möglicherweise nicht hilfreich ist .
Mattdm
15
@Legate: Wenn ein Texteditor die Datei an einen temporären Speicherort kopiert, die temporäre Arbeitskopie bearbeitet und dann beim Speichern die temporäre Kopie über das Original verschiebt, wann ist der Erstellungszeitpunkt?
Mattdm
1
Muss dies irgendwie aktiviert werden? Ich habe versucht, die Crtime für eine Datei in einem ext4-Dateisystem zu ermitteln, und dabei den Wert Null erhalten. Nachdem ich zuvor diesen Blog-Beitrag gelesen hatte , versuchte ich es auch mit debugfsund statstellte fest, dass es keine gibt crtime. Also frage ich mich, ob es irgendwie aktiviert werden muss? (FWIW ich benutze Arch Linux )
starfry
2
Es hat offenbar ein Weg , um die Datei Erstellungszeit in Linux zu bekommen. Siehe: unix.stackexchange.com/a/131347/182996
kaartic
30

Einige Dateisysteme speichern die Erstellungszeit der Datei, obwohl es keinen Standardnamen für dieses Feld gibt:

  • ufs2 → st_birthtime
  • zfs → crtime
  • ext4 → crtime
  • btrfs → otime
  • jfs → di_otime
jlliagre
quelle
5
Genauer gesagt unterstützt XFS ab dem 03. März 2015 nicht mehr (siehe xfs_dbHilfeseite oder in der XFS-Dateisystemstruktur
Franklin Piat
4

Soweit ich weiß, unterstützen ext4-, JFS- und BTRFS-Dateisysteme alle ein zusätzliches Feld in der Inode-Datei, um die Erstellungszeit zu speichern, obwohl die Benennung unterschiedlich sein kann.

Quelle: LWN File Creation Times

Huygens
quelle
// Konnten Sie dies überprüfen? AFAIK ist zumindest für meinen Geschmack etwas schwach.
Nathan Basanese
5
@ NathanBasanese Die AFAIK berichtete an JFS und BTRFS. Für ext4 unterstützt es das ja. Überprüfen Sie den debugfsBefehlsstatus. Beispiel: Sie müssen das Gerät, auf dem Ihr ext4-Dateisystem gemountet ist (z. B. / dev / sda3) und Sie müssen eine Datei-Inode-Nummer in diesem Dateisystem abrufen (verwenden ls -iSie beispielsweise 42000 ist die Nummer). Dann geben Sie einfach Folgendes ein: debugfs -R 'stat <42000>' /dev/sda3. Führen Sie dies als root oder mit ausreichenden Berechtigungen aus. Suchen Sie nach dem crtimeFeld, das ist das eine. Für JFS und BTRFS müssten Sie den entsprechenden Befehl debugfs finden ...
Huygens
//, NIIICE. Ich habe es mit $ ls -i | versucht grep dump.rdb 656376 dump.rdb und $ sudo debugfs -R 'stat <656376>' / dev / sda2, aber ich glaube, ich habe noch kein ext4 dort. Wenn ich es mit einer ext4 probiere, sage ich es.
Nathan Basanese
@ NathanBasanese Sie können df -Tden Partitionstyp abrufen oder einfach eingeben mount. Stellen Sie sicher, dass der Datei-Inode zur richtigen Partition gehört. Inodes sind (ihrer Natur nach) für eine Partition spezifisch.
Huygens