Ich versuche genau zu verstehen, wann der Zeitstempel einer Datei geändert wird. An vielen Stellen (z. B. in der hier akzeptierten Antwort ) wird vorgeschlagen, dass jede Änderung der Dateiattribute auch die Uhrzeit ändert. Dies scheint jedoch nicht zu stimmen, zumindest auf meinem Ubuntu 12.04 (ja, ich weiß, ein bisschen alt ...):
cat file.txt > /dev/null
Ändert den Zeitpunkt, sodass die Dateiattribute (im Datei-Inode) geändert werden, ändert jedoch nicht die Uhrzeit.
Andere Quellen (z. B. hier und hier ) schlagen vor, dass nur einige Operationen an den Dateiattributen tatsächlich die Uhrzeit ändern, eine genaue Liste wird jedoch nicht bereitgestellt.
Wo finde ich einen genauen Verweis darauf, welche Operationen die Uhrzeit ändern?
filesystem
VeryHardCoder
quelle
quelle
cat
, haben Sie es untersuchttouch
?Antworten:
Auf Unix-Systemen gibt es drei Zeitstempel:
atime
: ZugriffszeitDieser Zeitstempel gibt an, wann beim letzten Zugriff auf die Datei zugegriffen wurde, einschließlich des Lesezugriffs.
ctime
: Zeit ändernDieser Zeitstempel zeigt an, wann sich die Dateiattribute (Inode-Informationen) das letzte Mal geändert haben. Dies beinhaltet zB Besitz und Berechtigungen, aber eine Inhaltsänderung löst auch eine Aktualisierung dieses Zeitstempels aus.
Beachten Sie, dass Änderungen am atime eine Ausnahme zu sein scheinen, da sie keine ctime-Aktualisierung auslösen. Dies liegt wahrscheinlich daran, dass ein einfacher Lesezugriff, der ausreicht, um ein atime-Update auszulösen, keine relevanten Änderungen an den Dateiattributen vornimmt. Einer der Hauptzwecke von ctime besteht darin, Sicherungswerkzeugen dabei zu helfen, festzustellen, ob sich eine Datei geändert hat. Der Zeitpunkt ist eine irrelevante Information für solche Tools, und das Aktualisieren eines Backups, nur um einen geänderten Zeitpunkt zu aktualisieren, weil jemand die Datei gelesen hat, wäre nutzlos.
Ich bin nicht sicher, aber einige Leute denken, dass dieses Verhalten (Änderungen an atime aktualisieren ctime nicht) nur auf die Mount-Optionen (wierelatime
) des zugrunde liegenden Dateisystems zurückzuführen ist, die atime-Updates im Inode aus Leistungsgründen im Speicher zwischenspeichern und verzögern und wendet sie unter bestimmten Bedingungen nur auf die realen Inodes auf der Festplatte an (was ein ctime-Update auslöst).@kos hat es versucht und anscheinend scheint die ctime selbst beim Mounten eines FS mit der Option `strictatime`` nie zu aktualisieren, wenn sich der atime ändert.
mtime
: ÄnderungszeitDieser Zeitstempel zeigt an, wann der Inhalt der Datei das letzte Mal geändert wurde.
So ein einfacher Lesezugriff unter Verwendung von
cat FILENAME
nur die Änderungen atime , aber nicht die ctime als nicht bekam Dateiattribut geändert. Der geänderte Zeitpunkt zählt nicht.quelle