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

Zeitstempel, Änderungszeit und Erstellungszeit einer Datei

Es gibt 3 Arten von "Zeitstempeln":

  • Zugriff - wann die Datei zuletzt gelesen wurde
  • Modify - das letzte Mal, als die Datei geändert wurde (der Inhalt wurde geändert)
  • Änderung – Zeitpunkt der letzten Änderung der Metadaten der Datei (z. B. Berechtigungen)

Um diese Informationen anzuzeigen, können Sie stat verwenden das Teil der Coreutils ist.

stat zeigt Ihnen auch einige weitere Informationen wie das Gerät, Inodes, Links usw.

Denken Sie daran, dass diese Art von Informationen stark vom Dateisystem und den Mount-Optionen abhängt. Zum Beispiel, wenn Sie eine Partition mit dem noatime mounten Option werden keine Zugangsinformationen geschrieben.

Ein Dienstprogramm zum Ändern der Zeitstempel wäre touch .Es gibt einige Argumente, um zu entscheiden, welcher Zeitstempel geändert werden soll (z. B. -a für Zugriffszeit, -m für Änderungszeit) und um das Parsen eines neuen gegebenen Zeitstempels zu beeinflussen. Siehe man touch für weitere Details.

touch kann in Kombination mit cp -u praktisch werden ("Nur kopieren, wenn die SOURCE-Datei neuer ist als die Zieldatei oder wenn die Zieldatei fehlt" ) oder zum Erstellen leerer Markerdateien.


Die Antwort von Echox ist gültig, aber ich möchte Informationen zur Dateierstellungszeit hinzufügen.

Dateisystemunterstützung

Einige Dateisysteme unterstützen einen zusätzlichen Eintrag im Inode bezüglich der Erstellungszeit (oder Geburtszeit). Ich weiß, dass ext4 diese Funktion unterstützt und auch JFS und BTRFS.

Die meisten Tools und APIs wurden jedoch noch nicht aktualisiert, um diese zusätzlichen Informationen zu lesen. Obwohl es dort sein könnte, ist es also nicht zugänglich.

Unter Ubuntu 12.04 LTS erhalte ich beispielsweise Folgendes für eine Datei, die ich heute erstellt habe:

$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest 
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
 Birth: -
$ sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
 ctime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
 atime: 0x4fcdee98:42b417dc -- Tue Jun  5 13:33:44 2012
 mtime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun  5 13:32:22 2012
[...]

Sie können sehen, dass die neuere Statistikfunktion ein Geburtsfeld hat, obwohl die Ausgabe falsch zu sein scheint. Und über debugfs können wir die Informationen abrufen (crtime, da ich mich im ext4-Dateisystem befinde).

statx-Unterstützung

Seit Kernel 4.11 gibt es nun einen neuen statx-Systemaufruf, der neben besserer Unterstützung von Y2038 oder Netzwerkdateisystemen auch ein paar zusätzliche Features wie den btime bringt oder Geburtszeit (Erstellungszeit) zugreifen. Unterstützung für ext4 sollte in derselben Kernel-Version 4.11 enthalten sein.

Es gab Patches, um diesen neuen Systemaufruf in späteren Kernel-Versionen zu unterstützen:z. BTRFS und F2FS in Kernel 4.13, SMB3 in 4.14, GFS2 in 4.15, NFS in 4.16 usw.

Die kommende glibc wird einen Funktionsaufruf bereitstellen, um diese Schnittstelle abzufragen (siehe Phoronix-News über glibc statx-Unterstützung). Wir können also ziemlich bald mit Unterstützung für dieses Feature im Userspace rechnen.


Linux
  1. Wie mache ich A Ls und sortiere dann die Ergebnisse nach Erstellungsdatum?

  2. Wann wurde die Datei erstellt?

  3. Was zählt als Dateimodifikation oder -änderung?

  4. Ausgabe umleiten und leiten?

  5. Ubuntu – Linux – Dateiänderungszeit vs. Änderungszeit?

So erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit in Python

Verhindern Sie, dass Dateien und Ordner unter Linux versehentlich gelöscht oder geändert werden

Holen Sie sich die erstellte Datei/Erstellungszeit??

Threads und Dateideskriptoren

Wie listet man Dateien rekursiv auf und sortiert sie nach Änderungszeit?

Der FTP-Befehl zeigt eine andere Dateiänderungszeit an