Dr. Luthardt's Chemieseiten 

weiter

Best seen with
Get Firefox!

Valid HTML 4.01!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.
Valid CSS!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.

visitors
counter
last modified
08.12.2018

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.

Tipps und Tricks

von Michael Luthardtauthor: Michael Luthardt

Creation Date von Dateien und Ordnern anzeigen

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

Achtung 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.
Prinzipiell gäbe es die Möglichkeit, der Datei die Zeitstempel ihres Inode mitzugeben, sei es als Anhang (wie weiter streams in NTFS) oder besser als "lesen-schreiben" Mechanismus eines erweiterten Kopierbefehls. Offenbar gibt es dafür in -nixen keinen Bedarf.

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.
Ihr Browser kann das Objekt leider nicht anzeigen!

Einfacher ist es, sich einen crtime-Befehl zu schreiben, z. B. in /usr/local/bin abzulegen und dem Befehl debugfs weiter Superuser-Rechte zu geben.

Um den Befehl im weiter 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.

Achtung Leider wird die Creation Time von verschiedenen Programmen, insbesondere Editoren, unterschiedlich respektiert. Einige Editoren wie Geany oder Vim schreiben geänderte Dateien komplett neu, so dass die crtime gleichbedeutend mit mtime wird. Ein Append über cat >> file << eof >Hallo >eof hingegen erhält die crtime selbstverständlich. Die gute Nachricht zum Schluss: LibreOffice, getested für Writer und Calc, erhält die crtime, und damit kann man etwas anfangen. Es hilft nur, dies für jedes Programm selbst zu prüfen.

Eine brauchbare Lösung zum Erhalt der Creation Time führt über den Kopierbefehl cp foo bar, denn er ändert die crtime von bar nicht:

foo@bar:~$ touch test; crtime test; date
Wed Aug 29 09:33:38 2012 test (reguläre leere Datei)
Mi 29. Aug 09:33:38 CEST 2012
foo@bar:~$ cat test
foo@bar:~$ cp test tmp
foo@bar:~$ crtime test; date
Wed Aug 29 09:33:38 2012 test (reguläre leere Datei)
Mi 29. Aug 09:35:04 CEST 2012
foo@bar:~$ geany tmp
foo@bar:~$ cp tmp test
foo@bar:~$ cat test
huhu
foo@bar:~$ crtime test; date
Wed Aug 29 09:33:38 2012 test (reguläre Datei)
Mi 29. Aug 09:36:24 CEST 2012
foo@bar:~$ rm tmp

Ihr Browser kann das Objekt leider nicht anzeigen!
Das ist für den täglichen Einsatz zu umständlich. Ein Wrapper-Script für den Editor, zum Beispiel Geany, macht es etwas einfacher.

Besser wäre natürlich eine Änderung im Programmcode der Editoren, aber das Skript erfüllt den Zweck ebenso. Leerzeichen in Dateinamen werden verarbeitet, nicht jedoch im Pfad. Letzteres ließe sich auf gleiche Weise wie für FILE beheben.
Während des Editierens liegen die tmp_-Dateien im Hauptspeicher. Das Rückschreiben auf die Festplatte erfolgt einmal beim ersten Durchlauf durch die While-Schleife und dann nur noch nach jeder beim Editieren abgespeicherten Änderung. Das Skript beendet sich erst nach dem Beenden von Geany.

Speichert man das Skript unter ∼/bin/crt_geany, so kann man einen weiter Alias auf geany anlegen und es im Terminal mit geany filespec1 filespec2 …starten. Zu editierende Dateien müssen dem Skript als Parameter übergeben werden, um den Umweg über den Kopierbefehl zu nehmen. Gegebenenfalls müssen Dateien vor der ersten Bearbeitung mit touch filespec angelegt werden.
Eleganter und problemlos einzurichten ist eine Nautilus-Action mit Mehrfachauswahl für den Befehl crt_geany. Das funktioniert so wie für crtime beschrieben. Natürlich muss auch hier wieder die Namensübersetzung eingefügt werden.

           
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/28.11.2016

 nach oben

Änderungen dieser Seite verfolgen:

it's private by ChangeDetection