Welche Auswirkungen hat das Kopieren einer Datei, z. B. fileA.big (900 MB), von Speicherort B nach Speicherort C? Wenn während dieses CP-Vorgangs, sagen wir, 35% während des Vorgangs, fileA.big mit neuen Informationen angehängt wird und von 900 MB auf 930 MB anwächst.
Was ist das Ergebnis der Endkopie (dh fileA.big bei locationC)?
Was ist, wenn die Kopie zu etwa 70% vollständig ist und die Originaldatei aktualisiert wird, diesmal jedoch auf 400 MB gekürzt wird (dh der Fortschritt der Kopie liegt jenseits des Abschneidepunkts), was ist das Ergebnis der Endkopie?
Verweis auf ein Linux-Betriebssystem auf einem ext3 / ext4-Dateisystem. Keine Volumenschattenmagie etc .. Einfach nur altes cp. Neugierde, die durch das Kopieren von Live-Couchdb-Dateien zum Sichern ausgelöst wurde, aber eher an allgemeinen Szenarien als an spezifischen Anwendungsfällen interessiert war.
Antworten:
Wenn
fileA.big
während des Kopiervorgangs vergrößert wird, enthält die Kopie die angehängten Daten.Wenn die Datei kürzer als die aktuelle Position der Kopie abgeschnitten wird, wird die Kopie genau dort abgebrochen, wo sie sich befindet, und die Zieldatei enthält, was bis zum Abbruch kopiert wurde.
quelle
Patrick hat es mehr oder weniger richtig, aber hier ist der Grund. So kopieren Sie eine Datei unter UNIX:
fileA
.fileB
und kehren zu Schritt 1 zurück.Wenn wir das wissen und wissen, dass es so einfach ist, können wir einige Eckfälle sehen.
Sobald wir das Ende der Datei gefunden haben, ist der Kopiervorgang abgeschlossen. Nehmen wir also an, unsere Datei wächst während des Kopierens, wächst aber langsamer als wir es kopieren. Das Kopierprogramm überschreitet weiterhin die ursprüngliche Dateigröße, da die Datei zu diesem Zeitpunkt mehr enthält. Aber irgendwann, fängt sie mit dem Ende der Datei, und es weiß , dass es am Ende ist , weil es nicht lesen kann mehr Bytes jetzt . Es wird also sofort beendet, selbst wenn die Datei noch größer werden soll.
Wenn die Datei abgeschnitten ist, sagt das Kopierprogramm "Whoa, ich bin hinter dem Ende der Datei!" und beendet.
Und wenn Teile der Datei zufällig von einem Datenbankprogramm aktualisiert werden :-), wird Ihre Kopie eine Mischung aus alten und neuen Daten sein, da nicht alle Daten gleichzeitig kopiert werden. Das Ergebnis wird wahrscheinlich eine beschädigte Kopie sein, weshalb es im Allgemeinen keine gute Idee ist, Kopien von Live-Datenbanken zu erstellen.
(Allerdings kenne ich mich mit CouchDB nicht aus, und es ist möglich, eine Datenbank so zu gestalten, dass sie gegen diese Art von Korruption resistent ist. Aber das Beste, um absolut sicher zu sein.)
quelle