Dateisystem und Zeit der letzten Änderung
Hallo, da mich der Grund für unten geschildertes Verhalten interessiert, dachte ich, dass ein neuer, eigener Thread wohl am sinnvollsten ist: Als Dateisystem verwende ich ReiserFS. Durch das Verschieben einer Datei hat sich bei mir der Change-Status dieser Datei nicht geändert, bei Maik mit ext2 schon. Liegt es tatsächlich am Dateisystem oder was ist der Grund für dieses Verhalten? (Auch bei dem Verschieben einer Datei auf einer meiner FAT-Partitionen ändert sich die Change-Zeit nicht, wie ich gerade festgestellt habe.) Bis dann, Christian P.S.: Aus "Noch eine Frage zu Backup mit afio": Am Samstag, 2. August 2003 18:59 schrieb Maik Holtkamp:
0n 03/08/02@18:26 Christian Schneider told me:
chsch@client2:~> touch test chsch@client2:~> stat test [...] Change: 2003-08-02 18:18:16.000000000 +0200
mobil:/home/maik# stat test File: "test" [...] Change: Sat Aug 2 18:56:00 2003
chsch@client2:~> mv test test_moved chsch@client2:~> stat test_moved [...] Change: 2003-08-02 18:18:16.000000000 +0200
mobil:/home/maik# stat test_moved [...] Change: Sat Aug 2 18:56:33 2003
Hier war es jetzt ext2 aber vorher IIRC xfs.
Am Mon, 2003-08-04 um 15.39 schrieb Christian Schneider:
Hallo,
da mich der Grund für unten geschildertes Verhalten interessiert, dachte ich, dass ein neuer, eigener Thread wohl am sinnvollsten ist:
Als Dateisystem verwende ich ReiserFS. Durch das Verschieben einer Datei hat sich bei mir der Change-Status dieser Datei nicht geändert, bei Maik mit ext2 schon. Liegt es tatsächlich am Dateisystem oder was ist der Grund für dieses Verhalten?
(Auch bei dem Verschieben einer Datei auf einer meiner FAT-Partitionen ändert sich die Change-Zeit nicht, wie ich gerade festgestellt habe.)
Bis dann, Christian
Hallo, ich habe den alten Thread nicht verfolgt, aber: das "verschieben" einer Datei bewirkt das mv-Kommando. Wenn die Datei im selben Dateisystem verschoben wird, wird das ausschließlich durch Einträge in den jeweiligen Directories realisiert: mv a/xxx b/xxx -> Directory-Eintrag in a wird gelöscht, in b erzeugt. Handelt es sich dagegen um verschiedene Dateisysteme (siehe /etc/fstab), dann muss die Datei ins 2. System kopiert und im 1. gelöscht werden, entspricht "cp a/xxx b/xxx;rm a/xxx" Deshalb ist im 2 Fall die create-Zeit (change-Zeit) der Datei verändert. Gruß, Wolfgang
Am Montag, 4. August 2003 16:03 schrieb Wolfgang Hinsch:
Am Mon, 2003-08-04 um 15.39 schrieb Christian Schneider:
Hallo,
da mich der Grund für unten geschildertes Verhalten interessiert, dachte ich, dass ein neuer, eigener Thread wohl am sinnvollsten ist:
Als Dateisystem verwende ich ReiserFS. Durch das Verschieben einer Datei hat sich bei mir der Change-Status dieser Datei nicht geändert, bei Maik mit ext2 schon. Liegt es tatsächlich am Dateisystem oder was ist der Grund für dieses Verhalten?
(Auch bei dem Verschieben einer Datei auf einer meiner FAT-Partitionen ändert sich die Change-Zeit nicht, wie ich gerade festgestellt habe.)
Bis dann, Christian
Hallo,
ich habe den alten Thread nicht verfolgt, aber:
das "verschieben" einer Datei bewirkt das mv-Kommando. Wenn die Datei im selben Dateisystem verschoben wird, wird das ausschließlich durch Einträge in den jeweiligen Directories realisiert: mv a/xxx b/xxx -> Directory-Eintrag in a wird gelöscht, in b erzeugt.
Handelt es sich dagegen um verschiedene Dateisysteme (siehe /etc/fstab), dann muss die Datei ins 2. System kopiert und im 1. gelöscht werden, entspricht "cp a/xxx b/xxx;rm a/xxx"
Deshalb ist im 2 Fall die create-Zeit (change-Zeit) der Datei verändert.
Allerdings befanden sowohl "test" als auch "test_moved" bei Maik und mir immer in unseren Home-Verzeichnissen (bzw. im gleichen Verzeichnis). Daher dürfte wohl kein Kopieren über Dateisystemgrenzen hinweg stattgefunden haben. (Habe übrigens auch mal ein Samba-Share vom Server gemountet und dort eine Datei verschoben. Auch keine Änderung der Change-Zeit. Liegt es doch nicht am Dateisystem?)
Gruß, Wolfgang
Tschüs, Christian
Am Mon, 2003-08-04 um 18.20 schrieb Christian Schneider:
Am Montag, 4. August 2003 16:03 schrieb Wolfgang Hinsch:
Hallo,
ich habe den alten Thread nicht verfolgt, aber:
das "verschieben" einer Datei bewirkt das mv-Kommando. Wenn die Datei im selben Dateisystem verschoben wird, wird das ausschließlich durch Einträge in den jeweiligen Directories realisiert: mv a/xxx b/xxx -> Directory-Eintrag in a wird gelöscht, in b erzeugt.
Handelt es sich dagegen um verschiedene Dateisysteme (siehe /etc/fstab), dann muss die Datei ins 2. System kopiert und im 1. gelöscht werden, entspricht "cp a/xxx b/xxx;rm a/xxx"
Deshalb ist im 2 Fall die create-Zeit (change-Zeit) der Datei verändert.
Allerdings befanden sowohl "test" als auch "test_moved" bei Maik und mir immer in unseren Home-Verzeichnissen (bzw. im gleichen Verzeichnis). Daher dürfte wohl kein Kopieren über Dateisystemgrenzen hinweg stattgefunden haben.
(Habe übrigens auch mal ein Samba-Share vom Server gemountet und dort eine Datei verschoben. Auch keine Änderung der Change-Zeit. Liegt es doch nicht am Dateisystem?)
Gruß, Wolfgang
Tschüs, Christian
Ich habe es eben bei mir unter 8.1 reiser und ext3 getestet. Ergebnis: nanu! Du hast recht. reiserfs verhält sich wie oben beschrieben, unter ext3 (und wohl auch 2) wird die ctime verändert. Wieder was gelernt :) Gruß, Wolfgang
On Mon, Aug 04, 2003 at 04:03:41PM +0200, Wolfgang Hinsch wrote:
Am Mon, 2003-08-04 um 15.39 schrieb Christian Schneider:
Als Dateisystem verwende ich ReiserFS. Durch das Verschieben einer Datei hat sich bei mir der Change-Status dieser Datei nicht geändert, bei Maik mit ext2 schon. Liegt es tatsächlich am Dateisystem oder was ist der Grund für dieses Verhalten?
Warum ändert sich die ctime einer Datei d, die auf dem Dateisystem f liegt, wenn man den Syscall s auf diese Datei ausführt? Antwort: Weil im Code für den Syscall s in f eine Zeile wie diese hier steht: new_inode->i_ctime = CURRENT_TIME; Genau das steht in fs/ext2/namei.c:ext2_rename(): 299 ext2_inc_count(old_inode); 300 ext2_set_link(new_dir, new_de, new_page, old_inode); 301 new_inode->i_ctime = CURRENT_TIME; 302 if (dir_de) 303 new_inode->i_nlink--; 304 ext2_dec_count(new_inode); In fs/reiserfs/namei.c:reiserfs_rename() steht es nicht... Zwar ruft reiserfs_rename() intern reiserfs_add_entry() auf, aber diese Funktion setzt nur die mtime und die ctime des Zielverzeichnis neu, nicht jedoch die ctime der Datei. Ich habe mein POSIX jetzt nicht zur Hand und kann nicht sagen, welches Verhalten auf der Grundlage des Standards Mandat wäre. Ich vermute aber, daß ext2 Recht hat. Kristian
participants (3)
-
Christian Schneider
-
Kristian Koehntopp
-
Wolfgang Hinsch