Ist es sicher, eine Festplatte zu verwenden, während Rsync ausgeführt wird?


27

Ich plane, meine großen Festplatten bis zum zu sichern rsync, und erwarte, dass es einige Tage dauert. Ist es sicher, die Original-Festplatte (Hinzufügen von Dateien) während der rsyncArbeit zu verwenden? Oder ist es besser, die Festplatten unberührt zu lassen, bis der Vorgang abgeschlossen rsyncist?


1
Beachten Sie, dass "using" so einfach sein kann, als würde ein geöffneter Browser nichts tun. Browser neigen dazu, eine Menge zufälliger Dinge in ihre Datenverzeichnisse zu schreiben. Im schlimmsten Fall erhalten Sie eine inkonsistente Sicherung. Wenn Sie also eine Wiederherstellung durchführen, können Sie Ihre Registerkarten möglicherweise nicht mehr wiederherstellen, Ihre Lesezeichen sind möglicherweise nicht mehr vorhanden (weil die Datenbank beschädigt ist) oder es liegt etwas in dieser Größenordnung vor.
Jonas Schäfer

Wenn Sie so viele Daten sichern möchten, können Sie die Sicherung in kleinere Teile (Unterbäume) aufteilen. Dann muss nur der Teil, der gerade ausgeführt wird, so statisch wie möglich gehalten werden - und Sie können sehen, welcher Teil ausgeführt wird, indem Sie den Fortschritt Ihres Skripts verfolgen (mit einem Protokoll usw.). Da es sich nicht um ein einziges großes Backup handelt, sind einige Teile möglicherweise nicht mit den anderen synchron, aber wenn Sie auf einem Live-System ein einziges großes Backup ausführen, geschieht dies trotzdem.
Joe

Antworten:


34

Wie bereits erwähnt, können Sie sicher von der Quelldiskette lesen oder die Zieldiskette außerhalb des Zielverzeichnisses verwenden, während rsync ausgeführt wird. Das Lesen innerhalb des Zielverzeichnisses ist ebenfalls sicher , insbesondere wenn das Zielverzeichnis ausschließlich vom rsync-Lauf ausgefüllt wird.

Was im Allgemeinen nicht sicher ist, ist das Schreiben im Quellverzeichnis, während rsync ausgeführt wird. "Schreiben" ist alles, was den Inhalt des Quellverzeichnisses oder eines seiner Unterverzeichnisse ändert, einschließlich Datei-Updates, Löschen, Erstellen usw.

Dadurch wird also nicht wirklich brechen nichts, aber die Änderung nicht tatsächlich durch rsync abgeholt für das Kopieren auf den Zielort bekommen oder nicht. Dies hängt von der Art der Änderung ab, ob rsync das betreffende Verzeichnis bereits durchsucht hat und ob rsync die betreffende Datei oder das betreffende Verzeichnis bereits kopiert hat.

Es gibt jedoch eine einfache Möglichkeit, dies zu umgehen: Führen Sie nach Abschluss von rsync erneut mit denselben Parametern aus. (Es sei denn, Sie haben einen unkonventionellen Löschparameter. Wenn Sie dies tun, gehen Sie etwas vorsichtiger vor.) Wenn Sie dies tun, wird die Quelle erneut gescannt und alle Differenzen übertragen, die während des ursprünglichen Laufs nicht erkannt wurden.

Der zweite Durchlauf sollte nur Unterschiede übertragen, die beim vorherigen rsync-Durchlauf aufgetreten sind, und wird daher viel schneller abgeschlossen. Sie können den Computer also während des ersten Durchlaufs normal verwenden, sollten jedoch möglichst keine Änderungen an der Quelle während des zweiten Durchlaufs vornehmen. Wenn dies möglich ist, sollten Sie das Quelldateisystem unbedingt schreibgeschützt erneut bereitstellen, bevor Sie den zweiten rsync-Lauf starten. (Sowas mount -o ro,remount /media/sourcesollte schon gehen.)


7
Man kann sogar einen dritten Lauf nach einem zweiten Lauf machen: es kann noch weniger Zeit in
Anspruch

5
@ gerlos Ein Muster scheint sich abzuzeichnen. Es hört sich fast so an, als könnte man den Befehl rsync am Ende jeder Nutzungssitzung einfach weiter ausführen, und innerhalb weniger Tage wäre dies in kürzester Zeit erledigt.
Monty Harder

5
@gerlos Wenn Sie vor dem zweiten Ausführen von rsync ein schreibgeschütztes Remount durchführen, ist dies nicht erforderlich und die Sicherung ist so gut wie konsistent, während die Zeit minimiert wird, in der Sie nicht in das Quelldateisystem schreiben können.
ein Lebenslauf vom

1
@gerlos Abgesehen davon habe ich deshalb einen Eintrag ähnlich wie @reboot root find / -print &>/dev/nullin meiner System-Crontab, um den Cache zu füllen . (Der eigentliche Eintrag ist komplexer, um einige Sonderfälle auf meinem speziellen System zu berücksichtigen.) Er verwendet etwas RAM und eine gewisse Zeit für die Wanduhr früh nach dem Start, um das Durchsuchen des Verzeichnisbaums um einiges zu verbessern.
ein Lebenslauf vom

1
@ MichaelKjörling: Interessante Idee, die Hierarchie zwischenzuspeichern. Aber vielleicht sollten Sie stattdessen ausführen updatedb(Datenbank von locate slocate -uerstellen) oder (dasselbe, wenn Sie slocate haben)? Auf diese Weise können Sie die Hierarchie weiterhin zwischenspeichern, aber auch die Datenbanken von locate oder slocate aufbauen, sodass Sie mit diesen Befehlen schnell viele Dateien finden können.
Olivier Dulac

22

Dies hängt vom verwendeten Backup-System ab. Im Allgemeinen ist es jedoch eine schlechte Idee, den Inhalt eines Geräts zu ändern , während Sie es sichern. Sie können jedoch den Inhalt lesen . Das ist eine sichere Operation, auch wenn sie den Prozess verlangsamt.

In Ihrem Fall rsyncwird eine Dateiliste erstellt und dann die Sicherung gestartet. Daher werden alle Dateien, die Sie nach dem Start der Sicherung zur Quellfestplatte hinzufügen, nicht kopiert.

Was ich tue, ist, während eines Backups überhaupt kein Gerät zu verwenden. Dies ist der sicherere Weg, um ein schnelles und konsistentes Backup zu erhalten.


14
Normalerweise lasse ich es laufen und mache dann einen zweiten Lauf, der rsyncin wenigen Sekunden beendet wird, da nur die Dateien kopiert werden, die ich während des Laufs geändert habe. Alles wird sich in den Caches befinden, so dass es in dieser Zeit viel einfacher ist, auf Änderungen zu verzichten.
Martin Ueding

15

Es ist sicher, während des rsyncBetriebs Daten aus den Quellbereichen zu lesen. Wenn Sie jedoch etwas rsyncaktualisieren, ist es wahrscheinlich, dass die erstellte / aktualisierte Kopie inkonsistent ist:

  1. Wenn Sie eine Datei aktualisieren, die von rsync bereits gescannt wurde, wird das Update erst bei einem späteren Start angezeigt. Wenn Sie eine Datei aktualisieren, die noch nicht gescannt wurde, wird die Änderung im Ziel berücksichtigt. Wenn Sie Dateien aktualisieren, die sowohl gescannt als auch nicht gescannt wurden, wird das Ziel eine Mischung aus alten und neuen Versionen enthalten.

  2. Wenn Sie eine Datei zu einem Verzeichnis hinzufügen, das bereits gescannt wurde, wird sie dieses Mal von der Zielkopie übersehen. Wenn Sie eine Datei aus einem bereits gescannten Verzeichnis entfernen, verbleibt sie diesmal in der Zielkopie. Je nachdem, wie Sie rsyncden gesamten Baum aufrufen, wird dieser möglicherweise zu Beginn oder während des Synchronisierungsvorgangs inkrementell gescannt.

  3. In einigen Fällen rsyncwird die Inkonsistenz angezeigt und Sie gewarnt. Wenn Sie eine Datei oder ein Unterverzeichnis aus einem Verzeichnis entfernen, das bereits selbst gescannt wurde, dessen Inhalt jedoch noch nicht gescannt wurde, erhalten Sie eine Fehlermeldung über das fehlende Objekt. Unter ähnlichen Umständen kann es vorkommen, dass (wenn sich die Größe und / oder der Zeitstempel geändert hat) Dateien während des Scanvorgangs geändert werden.

Bei einigen Sicherungen ist diese Inkonsistenz möglicherweise kein schwerwiegendes Problem, bei den meisten wird jedoch empfohlen, keine sich aktiv ändernde Quelle zu synchronisieren.

Wenn Sie Ihr Speichersystem mithilfe von LVM partitionieren, können Sie mithilfe eines temporären Snapshots eine Sicherung zu einem bestimmten Zeitpunkt erstellen. Dies setzt voraus, dass Sie genügend Speicherplatz in der Volume-Gruppe haben, um ein Snapshot-Volume zu erstellen, das groß genug ist, um alle Änderungen zu speichern, die während der Dauer des Snapshots erforderlich sind. Weitere Informationen finden Sie in der LVM-Dokumentation (oder in einem der vielen Online-Beispiele: Suchen Sie nach "LVM-Snapshot-Backup" oder ähnlichem).

Selbst ohne LVM unterstützen einige Dateisysteme Snapshots selbst - daher möchten Sie möglicherweise auch diese Option in Betracht ziehen.

Wenn Sie große aktive Volumes ohne lange Ausfallzeiten sichern möchten und keine Snapshots verwenden können, reicht es möglicherweise aus, den "Live" -Scan vollständig auszuführen, dann den Zugriff auf das Volume zu beenden und einen weiteren rsync-Prozess auszuführen, der möglicherweise viel weniger Zeit in Anspruch nimmt (falls erforderlich) sehr wenig geändert hat, scannt es nur den Verzeichnisbaum und dann die wenigen aktualisierten Dateien). Auf diese Weise kann die Dauer, in der Sie Änderungen vermeiden sollten, viel kürzer sein.


Ihre Antwort gefällt mir am besten, weil Sie sich eingehend damit befassen, was passiert, wenn Dateien geändert werden. Sie stellen nicht nur eine Alternative zur Verfügung, sondern beheben auch die Inkonsistenzen, die dadurch verursacht werden können (Fehlen eines Updates, Warnung vor einer fehlenden Datei usw.). In meiner Situation ist es keine große Sache, rsync zu verwenden, um ein langes Backup zu erstellen und es dann einige Tage später zu aktualisieren, und das klingt auch nach der Situation des OP. Es hört sich nicht so an, als ob er / sie zum ersten Mal ein Backup auf Unternehmensebene benötigt, sondern möchte den Computer in der Zwischenzeit nur benutzen. Ich sage nur, rsync ein zweites Mal ausführen, um die aktualisierten Dateien abzufangen.
ibennetch

11
  • Quelle HDD kann alles lesen, während Rsync.

  • Die Quellfestplatte kann alle Inhalte schreiben, die nicht mit dem rsync-Inhalt zusammenhängen.

  • Die Zielfestplatte kann während des Synchronisierens alles lesen.

  • Die Zielfestplatte kann während des Synchronisierens alles schreiben, sofern genügend Speicherplatz für den synchronisierten Inhalt zur Verfügung steht.

Natürlich kommt es in jedem Fall zu Leistungseinbußen.


0

In allen aktuellen Antworten geht es um Datensicherheit in Bezug auf Konsistenz und die Annahme einer perfekten Hardware.

Eine weitere zu berücksichtigende Sache ist die Hardware-Sicherheit. Wenn Sie nicht gesicherte Festplatten haben, die kurz vor dem Ausfall stehen (vielleicht wissen Sie es noch nicht einmal), und Sie ein erstes umfassendes Backup erstellen, verwenden Sie es nicht. Mounten Sie es nicht einmal, wenn die Daten kritisch sind. Sie können ein Tool verwenden dd, um die Festplatte als Blockgerät zu klonen. Was Sie nicht wollen, dass der Plattenkopf sucht und möglicherweise schreibt, während Sie versuchen, ein Backup zu erstellen. Plus ddsollte für das anfängliche Backup schneller sein, da es nur die Bits in der richtigen Reihenfolge kopiert (Wenn das Laufwerk zum größten Teil nicht voll ist, würde rsync vermutlich auch im ersten Fall gewinnen).

Für nachfolgende inkrementelle Backups ist rsync eine gute Wahl und ich stimme den anderen Antworten zu 100% zu.


1
Wenn die Medien marginal oder sogar potentiell marginal sind, ddist dies nicht die beste Wahl. Verwenden Sie ddrescuestattdessen; Teilausfälle werden viel besser behandelt. Aber das war in der ursprünglichen Frage keine Überlegung.
ein Lebenslauf

@ MichaelKjörling Das ist ein guter Punkt.
Zak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.