Unser Systemadministrator hat ein Backup-System erstellt, das Snapshots der Festplatte erstellt.
Wenn ich versuche, eine ältere Version aus dem Snapshot wiederherzustellen:
cp /path/to/snapshots/foo.bar /path/to/folder/foo.bar
Ich erhalte eine Fehlermeldung:
cp: `/path/to/snapshots/foo.bar' and `/path/to/folder/foo.bar' are the same file.
Ich kann die Datei löschen und kopieren, wollte aber wissen, ob es eine Möglichkeit gibt, dies mit cp zu tun.
Ich weiß, dass die Dateien nicht verknüpft sind, weil:
- Ich kann den Inhalt der Quelle ändern und die Schnappschüsse bleiben unverändert (getestet)
- Ich kann die Quelle löschen und die Schnappschüsse sind zum Wiederherstellen da (getestet)
- Die Dateien werden im Rechencluster der Universität gespeichert. Wenn so etwas wahr wäre, wäre schon jemand gefeuert worden (oder zumindest angeschrien).
Trotzdem ist die inode
Anzahl der Dateien gleich
Der Cluster wird über Red Hat Linux implementiert und ich weiß nicht, was das Dateisystem ist
df Ergebnis:
Filesystem 1K-blocks Used Available Use% Mounted on
<ipadress>:/vol/hpc/storage
67633152 67633152 0 100% /storage
<ipadress>:/vol/hpc/storage
2186805248 982498048 1204307200 45% /storage
stat Ergebnis:
File: `/path/to/snapshots/foo.bar'
Size: 404 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 19750461 Links: 1
Access: (0644/-rw-r--r--) Uid: (<num1>/ yotama9) Gid: ( <num2>/ <groupname>)
Access: 2012-01-22 00:03:27.246852000 +0200
Modify: 2012-01-19 23:10:32.746397000 +0200
Change: 2012-01-19 23:10:32.746397000 +0200
File: `/path/to/folder/foo.bar'
Size: 404 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 26335134 Links: 1
Access: (0644/-rw-r--r--) Uid: (<num1>/ yotama9) Gid: ( <num2>/ <groupname>)
Access: 2012-01-24 16:03:48.732453000 +0200
Modify: 2012-01-24 16:03:30.728900000 +0200
Change: 2012-01-24 16:03:30.728900000 +0200
filesystems
files
backup
file-copy
Yotam
quelle
quelle
run ls -l -i
auf beiden Dateien, um zu sehen, ob dieinode
Nummer gleich ist. Wenn die Inode- Nummer identisch ist, haben Sie keine Sicherung. es bedeutet, dass es nur 1 echte Datei und 1 Hardlink zu dieser Datei gibt,echo x >> foo.bar
. Oder testen Sie, ob der Inode immer noch derselbe ist, nachdem Sie ihn auf Ihre Weise geändert haben. 2. Das ist die Idee. Sie löschen einen Link, der andere bleibt.df /path/to/snapshot /path/to/source; ls -l /path/to/snapshot /path/to/source; stat /path/to/snapshot /path/to/source
zeigt?Antworten:
Normalerweise sollen Dateisystemimplementierungen Anwendungsprogrammen garantieren, dass zu jedem Zeitpunkt auf einem bestimmten Computer jede Datei durch die Kombination ihrer Geräte-ID (das
st_dev
Feld in derstat
Struktur ) und ihres Inodes (dasst_ino
Feld) eindeutig identifiziert werden kann . Die Geräte-ID gibt an, auf welchem gemounteten Dateisystem sich die Datei befindet, und der Inode kennzeichnet eine Datei in einem bestimmten Dateisystem.cp
betrachtet zwei Dateien als identisch, wenn sie dieselbe Geräte-ID und denselben Inode haben.Es ist möglich, mehr als ein Paar (Geräte-ID, Inode) für eine Datei zu haben, wenn auf andere Weise auf sie zugegriffen wird, z. B. durch einen NFS-Mount an localhost (solche Szenarien sind in der Regel exotisch).
Es sollte nicht möglich sein, dass verschiedene Dateien dieselben Paare (Geräte-ID, Inode) haben. Dies hängt jedoch von der Implementierung des Dateisystems ab. Wenn Sie den Inhalt der Quelle ändern können, ohne den Snapshot zu ändern, würde ich erwarten, dass der Snapshot eine andere Geräte-ID als die Quelle aufweist, aber es ist möglich, dass einige Implementierungen dies nicht tun.
Beachten Sie, dass Ihre Tests außer dem Ändern der Datei nichts beweisen. Durch das Löschen eines festen Links werden die anderen Namen der Datei nicht gelöscht. Das Kopieren von Dateien nur bei Bedarf ist für Snapshots üblich. Daher wäre es nicht ungewöhnlich, wenn die Datei im Snapshot genau mit der Datei außerhalb des Snapshots identisch wäre, solange der Dateiinhalt identisch bleibt. Die Inode-Nummer bleibt normalerweise gleich.
Stellen Sie beim Ändern der Datei sicher, dass Sie in dieselbe Datei schreiben und nicht eine Datei entfernen, und unmittelbar nachdem Sie eine andere Datei mit demselben Namen erstellt haben.
Wenn Sie zwei verschiedene Dateien (den Snapshot und die Quelle) mit derselben Geräte-ID und demselben Inode, aber unterschiedlichen Inhalten haben, werden die meisten Anwendungen glauben, dass sie gleich sind. Sie müssen einen Weg finden, um die Gleichheit der Dateien zu testen, der von der Snapshot-Technologie abhängt, oder den Inhalt beider Seiten prüfen oder das Ziel systematisch entfernen.
quelle