Ich habe im Internet nach einer Möglichkeit gesucht, ein vollständiges Backup meines Linux-Rechners (kein Server) zu erstellen und alles jederzeit wiederherzustellen.
Ich begann mit dem am häufigsten verlinkten Leitfaden in jedem Thread.http://www.mikerubel.org/computers/rsync_snapshots/index.htmlund ich dachte, dass diese Art der Sicherung eine inkrementelle Sicherung war, nach einem weiteren Tag der Recherche fand ich Was ist der Unterschied zwischen differenzieller und inkrementeller Sicherung in Bezug auf den Rsync-Befehl?und andere Diskussionen, aber ich bin nicht sicher, was ich wirklich tue.
Nach der Anleitung und den Beiträgen habe ich beschlossen, es mit einem einzelnen Ordner (vor dem Sichern des gesamten Systems) namens source zu versuchen
rsync -av --delete /home/user/source /home/user/backup/backup0/
dann habe ich einige Dateien hinzugefügt und entfernt und das Backup noch dreimal durchgeführt
rsync -avH --delete --link-dest=/home/user/backup/backup0 /home/user/source /home/user/backup/backup1
rsync -avH --delete --link-dest=/home/user/backup/backup1 /home/user/source /home/user/backup/backup2
rsync -avH --delete --link-dest=/home/user/backup/backup2 /home/user/source /home/user/backup/backup3
Ich dachte, dass ich mit dieser Art von Backup etwa Folgendes erhalten würde:
backup0-->backup1-->backup2-->backup3
Wenn ich also den Inhalt von „backup3“ wiederherstellen wollte, waren die Dateien #1 und #2 erforderlich, aber ich habe sie gelöscht und dann das Backup3 wiederhergestellt, und alles war wieder an seinem Platz. Also habe ich
user@user:/backup$ du -sh *
450M backup0
620K backup1
624K backup2
628K backup3
Es sieht aus wie ein differentielles Backup, nicht wie ein inkrementelles, aber ich dachte, dass ich für ein differentielles Backup bei jedem Backup Folgendes einstellen müsste:
--link-dest=/home/user/backup/backup0
Meine Frage ist: Habe ich da einen Fehler gemacht? Gibt es eine bessere Möglichkeit, ein komplettes System mit rsync zu sichern?
PS: Das Zielgerät wird ein externes Laufwerk mit demselben Dateisystem sein.
Antwort1
Mit Hardlinks kann man mehrere Kopien einer Datei speichern und es wird nur der Speicherplatz einer Kopie belegt. Sie sehen, dass du
der Speicherplatz, der von mehreren Hardlinks auf dieselbe Datei belegt wird, nicht doppelt gezählt werden darf.
Wenn Sie Folgendes ausführen würden:
du -sh backup3
Sie werden feststellen, dass Backup3 etwa 450 MB belegt. Wenn Sie Folgendes ausführen:
du -sh backup2 backup3
Sie würden feststellen, dass Backup2 etwa 450 MB belegt, während Backup3 sehr wenig belegt. Das liegt daran, dass du
Backup2 zuerst durchgesehen und dessen Speicherplatz gezählt wurde. Als Backup3 durchgesehen wurde, zählte es nur den neu genutzten Speicherplatz und nicht die Hardlinks zu Dateien, die bereits in Backup2 gezählt wurden.
Jedes Backup ist vollständig und enthält alles, was Sie für eine vollständige Wiederherstellung benötigen. Da die Dateien jedoch fest verknüpft sind, wird insgesamt viel weniger Speicherplatz benötigt.
Beispiel
Ich habe eine 1,2 MB große Datei im Verzeichnis abgelegt src/
. Lassen Sie uns zwei Backups erstellen:
$ rsync -a src backup1
$ rsync -a --link-dest=../backup1 src backup2
Mal sehen, wie groß Backup2 ist:
$ du -sh backup2
1.2M backup2
Backup2 hat 1,2 Megabyte. Sehen wir uns nun an, wie groß Backup1 und Backup2 sind:
$ du -sh backup1 backup2
1.2M backup1
8.0K backup2
Nun scheint Backup2 nur 8 KB groß zu sein. Das liegt daran, dass die Hardlinks nicht doppelt gezählt werden.
Antwort2
Hardlinks sind die beste Möglichkeit, Speicherplatz zu sparen. Anstatt mit rsync zu skripten, verwende ich einen Wrapper, der diese Aufgabe übernimmt:Butterfly-Backup.
Dieser Wrapper verwendet reines rsync und verwandelt rsync in ein echtes Backup-/Wiederherstellungstool (es verfügt auch über Archivierungs-/Exportmodi).
Außerdem gibt es in den Optionen die --mode/-m
Option, mit der Sie den Backup-Modus auswählen können zwischenInkrementelloderDifferential.
Im Differenzialmodus wird das erste vollständige Backup gespeichert und alle folgenden Backups werden dann daran angeschlossen, wodurch dank Hardlinks viel Platz gespart wird.
Ein Beispiel:
$ bb backup --computer mypc --destination /backup --data User --type Unix
--mode Differential