Was zählt als Dateiänderung oder -änderung?

16

Beeinflusst das Umbenennen die Änderung der Datei oder die Zugriffszeit? Gibt es irgendwo eine Liste, was sich zu welchen Zeiten ändert?

Gilles 'SO - hör auf böse zu sein'
quelle

Antworten:

9

Durch das Umbenennen wird die Änderungszeit aktualisiert:

$ mkdir tmp
$ cd tmp

$ echo abc > a
$ stat a
  File: `a'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000 /  zelda   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
 Birth: -

$ mv a b
$ stat b
  File: `b'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  zelda)   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
 Birth: -

Die Zugriffszeit wird beim Lesen des Inhalts einer Datei aktualisiert. Ändern, wenn Sie die Datei tatsächlich aktualisieren (das Öffnen zur Änderung reicht nicht aus, um die Änderungszeit zu ändern).

Zelda
quelle
Ändert das Kopieren und Einfügen einer Datei die Änderungszeit für die neue Datei? Verändert die Verwendung von Strg + X und das Einfügen die "Änderungs" -Zeit?
1
Eine Kopie erstellt eine neue Datei mit Modify, Access und Change mit einem neuen Wert (egal). Das Einfügen von etwas in einen Editor (und das anschließende Speichern) aktualisiert alle drei (Änderungen mit einem späteren Zeitstempel als die anderen beiden, natürlich erst nach dem Speichern)
Zelda
Ich meinte STRG + x für die Datei und STRG + v woanders.
Hierfür werden die Befehlszeilentools cpund mvund vizum Bearbeiten verwendet. Andere Editoren oder Ihr Desktop bearbeiten die Aufgabe möglicherweise anders und aktualisieren mehr Zeitstempel.
Zelda
ZB Nautilus aktualisiert Access und Modify nicht mit Strg + X und dann mit Strg + V, nur Change ist anders, wiemv
Zelda
9

Eine Änderung, die sich auf die M-Zeit der Datei auswirkt, ist eine Änderung der Dateidaten: ein Schreiben mit einer Anzahl von Bytes ungleich Null oder eine Kürzung, die letztendlich die Datei ändert. Beim Erstellen einer Datei wird die Uhrzeit ebenfalls auf das aktuelle Datum gesetzt. Das bloße Öffnen einer Datei zum Schreiben wirkt sich nicht auf die Zeit aus, vorausgesetzt, die Datei wird nicht erstellt oder abgeschnitten.

Das Lesen aus einer Datei (wenn eine Anzahl von Bytes ungleich Null gelesen wird) oder das Ausführen einer Datei setzt ihre Zeit auf die aktuelle Zeit. Das bloße Öffnen einer Datei zum Lesen hat keinen Einfluss auf die Uhrzeit. Unter Linux ist dies jetzt in den meisten Fällen standardmäßig deaktiviert. Die atimeMount-Option stellt zeitweise Aktualisierungen wieder her, während die noatimeMount-Option sie vollständig deaktiviert.

Programme können die Uhrzeit und die Uhrzeit einer Datei ändern. Der grundlegende Befehl dazu ist touch. Einige Dateikopierprogramme stellen die Kopie auf die gleiche Zeit wie das Original ein, z. B. cp -poder rsync -t.

Eine Änderung, die sich auf die Uhrzeit der Datei auswirkt, ist eine Änderung der Metadaten der Datei: Berechtigungen, Eigentümer, Zeiten, Anzahl der Verknüpfungen usw. Durch das Umbenennen einer Datei wird auch ihre Uhrzeit aktualisiert. Änderungen der Dateidaten wirken sich auch auf die Uhrzeit aus, aber das Lesen aus einer Datei ändert die Uhrzeit nicht, auch wenn sich die Uhrzeit ändert. Es ist unmöglich, die ctime auf eine andere Weise zu ändern, als sie auf die aktuelle Zeit einzustellen (selbst root ist eingeschränkt, aber root kann die ctime indirekt einstellen, indem es zuerst die Systemzeit ändert oder direkt auf die Partition zugreift, die das Dateisystem enthält).

Gilles 'SO - hör auf böse zu sein'
quelle
1

Eine zusätzliche empirische Beobachtung, die in den anderen Antworten nicht erwähnt wird:

Das Öffnen der Datei zum Schreiben mit O_TRUNCändert die Zeit, auch wenn die Datei ursprünglich leer war.

Dies scheint zumindest auf ext3 unter Linux 3.10 der Fall zu sein.

Arseniy Alekseyev
quelle