Der Zeitstempel unter Linux

Der oder besser gesagt die Zeitstempel sind eine Eigenschaft von Dateien. Linux kennt vier Zeitstempel von denen drei ausgelesen werden können und für den Benutzer eine gewisse Relevanz haben. Die Zeitstempel einer Datei können mit dem Befehl stat ausgelesen und mit dem Befehl touch manipuliert werden.

Die drei Zeitstempel sind:

  1. Access Time (atime)
  2. Modify Time (mtime)
  3. Change Time (ctime)

Der Befehl stat zeigt die entsprechenden Zeitstempel:

$ stat ipsum.txt 
[…]
Zugriff : 2020-06-11 18:50:30.037729391 +0200
Modifiziert: 2020-06-05 18:18:11.006297528 +0200
Geändert : 2020-06-12 22:11:01.126806416 +0200
[…]

Beim Anlegen einer Datei durch beispielsweise dem Schreiben einer neuen Textdatei auf den Datenträger werden alle drei Zeitstempel auf die aktuelle Uhrzeit und das aktuelle Datum gesetzt. Der Zeitstempel sieht nun folgendermaßen aus:

$ touch beispieldatei.txt
$ stat beispieldatei.txt 
[…]
Zugriff : 2020-06-18 16:47:04.219545121 +0200
Modifiziert: 2020-06-18 16:47:04.219545121 +0200
Geändert : 2020-06-18 16:47:04.219545121 +0200
[…]

Zur Erinnung – touch <Dateiname> legt eine leere Datei mit dem angegebenen Dateinamen an.

Access Time (atime)

Access Time oft auch als atime und mit der deutschsprachigen Sprachversion von stat als „Zugriff“ bezeichnet ist der Zeitstempel der beim Lesen einer Datei aktualisiert wird. Wenn die oben angelegte Beispieldatei mit cat ausgelesen wird dann sieht man die Änderung von atime mit dem Befehl stat:

$ cat beispieldatei.txt 
$ stat beispieldatei.txt 
[…]
Zugriff : 2020-06-18 16:52:58.386746786 +0200
Modifiziert: 2020-06-18 16:47:04.219545121 +0200
Geändert : 2020-06-18 16:47:04.219545121 +0200
[…]

Außer atime sind die anderen Zeitstempel gleich geblieben. Dieser Zeitstempel wird bei jedem Zugriff wie z.B. dem Auslesen für ein Backup oder das Auslesen durch grep geändert.

Modify Time (mtime)

Die Modify Time oder auch mtime (stat: Modifiziert) ist der Zeitstempel der angibt wann die Datei das letzte Mal verändert wurde. Dabei ist es egal ob sie durch einen Editor editiert wurde oder durch eine Ausgabeumlenkung verändert wurde:

$ echo neue_Zeile >> beispieldatei.txt
$ stat beispieldatei.txt
[…]
Zugriff : 2020-06-18 17:03:36.773826293 +0200
Modifiziert: 2020-06-18 21:49:14.515119243 +0200
Geändert : 2020-06-18 21:49:14.515119243 +0200
[…]

Beim voran gegangenem Beispiel wird auch die ctime geändert. Wenn man sich mit Hilfe von ls -l die Dateieigenschaften anzeigen lässt dann wird hier die mtime angezeigt:

$ ls -l beispieldatei.txt
-rw-r--r-- 1 max max 21 Jun 18 21:49 beispieldatei.txt

Change Time (ctime)

Die Change Time (ctime) oder bei stat auch „Geändert“ ist der Zeitstempel, der die Änderung einer Datei innerhalb des Inodes dokumentiert (irrtümlicherweise wird ctime auch als Create Time bezeichnet). Da in den Inodes der Dateiname, die Dateigröße, die Datenblöcke aber auch die Zugriffsrechte wie UserID und Gruppen-ID als auch die Anzahl der Hardlinks enthalten sind wird bei Änderungen dieser Dateieigenschaften die ctime geändert. Im Beispiel oben wurde z.B. die Dateigröße geändert und damit auch die ctime. Im Beispiel unten ist die Änderung von ctime durch ein Umbenennen einer Datei gezeigt

$ stat beispieldatei.txt
[…]
Zugriff : 2020-06-18 17:03:36.773826293 +0200
Modifiziert: 2020-06-18 21:49:14.515119243 +0200
Geändert : 2020-06-18 21:49:14.515119243 +0200
[…]

$ mv beispieldatei.txt beispieldatei2.txt
$ stat beispieldatei2.txt
[…]
Zugriff : 2020-06-18 17:03:36.773826293 +0200
Modifiziert: 2020-06-18 21:49:14.515119243 +0200
Geändert : 2020-06-18 22:15:27.046125832 +0200
[…]

Da gemäß dem *nix-Motto „alles ist eine Datei“ besitzen auch Verzeichnisse, Geräteknoten, hard- und symbolische Links aber auch Pipes einen Zeitstempel. Das Verhalten von den verschiedenen Dateitypen verhält sich jedoch je nach Funktionalität des Dateityps anders. In der untenstehenden Tabelle sind Dateioperationen und deren Auswirkung auf die Zeitstempel aufgeführt.

Tabelle zur Änderung der Zeitstempel verschiedener Dateitypen bei Befehlen

BefehlAktuelles VerzeichnisDateiSymlink auf Datei
atimemtimectimeatimemtimectimeatimemtimectime
ls *xx
cat *xxx
find .x
grep Begriff *xxx
echo „neue Zeile“ >> Dateixx**
echo „neue Zeile“ >> Symlinkxxxx
mv Datei Datei_1xxxx
ln Datei Datei_1xxx***
chmod 777 Dateix***
chown user1 Dateixx
tar -cf ../Archiv.tar ./xxxx
tar -xf ../Archiv.tar ./xxxxxxx

x = Zeitstempel wird aktualisiert; – = Zeitstempel wird nicht angetastet; * = Nicht getestet

2 Gedanken zu „Der Zeitstempel unter Linux“

Kommentare sind geschlossen.

kais-universum.de