last modified
16.02.2024
Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.
von Michael Luthardt
Der erstmalige Erstellungszeitpunkt einer Datei, Creation Date, abgekürzt crtime, mitunter birth oder Geburt genannt, wird zumindest in dem unter Linux benutzten Dateisystem Ext41 gespeichert. Leider geben weder die Coreutils ls oder stat oder Gnome Nautilus diese Zeit aus, auch nicht mit aktuellen GNU core utilities. Mit Ext4 und aktuellen Coreutils sollte stat -c%w filespec
die crtime anzeigen. Leider scheint es dort noch einen Bug zu geben; die crtime wird stets als nicht vorhanden angezeigt ("-").
Wir sprechen zwar von Zeitstempeln der Dateien, in Wirklichkeit sind es aber in den -nix-Dateisystemen Zeitstempel der Inodes. Die crtime ist die "Geburt" des Inodes im aktuellen Dateisystem und nicht der Datei, analoges gilt für die ctime. Demzufolge kann auch copy -p …
beim Kopieren auf ein neues Dateisysten (Partition) nur atime und mtime auf den neu angelegten Inode übertragen. In solchen Fällen kann die mtime vor der crtime liegen.
Ausgeben läßt sich die crtime in Ext4-Dateisystemen mit dem Befehl stat des Dateisystems debugfs:
debugfs -R "stat filespec" device
. Der Pfad für filespec bezieht sich auf den zu device gehörenden mountpoint. Der Befehl muss als root ausgeführt werden.
foo@bar:~$ date; touch xyz; debugfs -R "stat foo/xyz" /dev/sda5
Sa 25. Aug 19:38:12 CEST 2012
debugfs 1.41.14 (22-Dec-2010)
Inode: 10755723 Type: regular Mode: 0644 Flags: 0x80000
Generation: 965722125 Version: 0x00000000:00000001
User: 1000 Group: 1000 Size: 0
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x50390d84:d5789ddc -- Sat Aug 25 19:38:12 2012
atime: 0x50390d84:d5789ddc -- Sat Aug 25 19:38:12 2012
mtime: 0x50390d84:d5789ddc -- Sat Aug 25 19:38:12 2012
crtime: 0x50390d84:d5789ddc -- Sat Aug 25 19:38:12 2012
Size of extra inode fields: 28
EXTENTS:
foo@bar:~$
Den Mountpoint findet man am einfachsten mit df file
. Im Beispiel bezieht er sich auf /home. Um Dateinamen mit Leerzeichen an stat in debugfs zu übergeben ist es besser, statt einer Pfadangabe die Inode-Nummer zu verwenden. Zu weiteren Informationen über debugfs schauen Sie bitte in die man-page.
Einfacher ist es, sich einen crtime-Befehl zu schreiben, z. B. in /usr/local/bin abzulegen und dem Befehl debugfs Superuser-Rechte zu geben.
Um den Befehl im Nautilus-Kontextmenü zur Hand zu haben, muss das Skript um eine Zenity-Ausgabe erweitert werden.
Als Ausgaben erhät man mit crtime:
foo@bar:~$ date; touch xyz; crtime xyz
Sa 25. Aug 20:53:51 CEST 2012
Sat Aug 25 20:53:51 2012 xyz (reguläre leere Datei)
foo@bar:~$ date; touch xyz; crtime xyz
Sa 25. Aug 20:54:09 CEST 2012
Sat Aug 25 20:53:51 2012 xyz (reguläre leere Datei)
foo@bar:~$ crtime xyz 1.png y Eicar
Sat Aug 25 20:53:51 2012 xyz (reguläre leere Datei)
Wed Apr 25 20:19:00 2012 1.png (reguläre Datei)
y (file not found)
Wed Feb 1 07:45:50 2012 Eicar (Verzeichnis)
foo@bar:~$
Diese Listen lassen sich mit crtime * | sort -k5,5 -k2,2M -k3,3n -k4,4
nach dem "Geburtsdatum" sortieren.
Die Creation Time wird von Programmen wie Editoren &c. nicht respektiert, da die Dateien nach einer Änderung neu geschrieben werden. Eine Möglichkeit, Dateien unter Linux dennoch dauerhaft das Geburtsdatum mitzugeben ist, dieses händisch in einem "extended attribute" zu speichern. Dazu müssen im Kernel diese Attribute aktiviert sein, was so gut wie immer der Fall ist.
Zweckmäßig legt man die Datei zuerst als leere Datei an, setzt das Attribut und bearbeitet sie anschließend. Die folgende Funktion, zum Beispiel in der bash gespeichert, erledigt dies:
function cr() { touch $1; setfattr -n user.date -v $(date -I) $1; }
, der Aufruf ist dann cr NeueDatei[.txt|.odt|.whatsoever]
.
Mit date -I wird nur das Datum gespeichert. Will man auch die Zeit festhalten, ist $(date -I) entsprechend zu ändern. Sichtbar wird das Attribut mit getfattr -n user.date -d Datei
.
1 ext3-Dateisysteme lassen sich als ext4 mounten. Selbst wenn also in der fstab ext4 angegeben ist, gibt es keine crtime, falls es originär ein ext3-System ist.
25.08.2012/05.09.2022