Diese Frage beantwortet die Frage, wie ich einen externen Computer verwende, um ein Backup meines RPi zu erstellen.
Ich frage mich, ob ich ein Backup-Image der derzeit verwendeten SD-Karte erstellen und in eine Datei auf einem USB-Speichergerät kopieren kann. Ist das möglich? Wenn nicht, gibt es eine Möglichkeit, ein Backup eines RPi zu erstellen, ohne einen anderen Computer einzubeziehen?
dd
, reinschauenrsync
.dd
es wahrscheinlich am schnellsten , das Dateisystem schreibgeschützt erneut bereitzustellen und eine Kopie mit einer geeigneten Blockgröße zu erstellen, um eine "neue" Kopie zu erstellen. Es ist wahrscheinlich eine schlechte Idee, eine Datei für Datei auf Flash- / SD-Medien zu kopieren.Antworten:
Hier ist eine Einführung in die Verwendung
rsync
für die Sicherung auf dem Pi. Sobald das erste Backup erstellt wurde, ist es viel schneller, es auf dem neuesten Stand zu halten, als das gesamte Image ständig zu rippen. Sie können dies auf einer lokalen Festplatte oder über ein Netzwerk tun.Sie möchten eigentlich keine vollständige Kopie eines laufenden Systems als Backup, da einige der angeblich im Dateisystem vorhandenen Daten nur zur Laufzeit vorhanden sind. Wenn Sie dies in ein Backup aufnehmen und später ein Image daraus erstellen, kann dies zu Problemen für Sie führen.
Es gibt auch einige andere Ausnahmen.
rsync
kann eine Liste von ( Glob- ) Mustern akzeptieren , die ausgeschlossen werden sollen, und diese können aus einer Datei gelesen werden. Gehen wir also zunächst durch, was in einer solchen Datei enthalten sein soll. Beachten Sie, dass die Einträge von der Form sind/directory/*
und nicht/directory
. Das liegt daran, dass wir wollen, dass sie existieren, aber wir wollen nichts in sie kopieren.Diese existieren nicht wirklich auf der Festplatte. Sie sind eine Schnittstelle zum Kernel, der sie im Speicher erstellt und verwaltet . Wenn Sie diese kopieren und dann wieder in ein System kopieren und es booten, ist dies (bestenfalls) bedeutungslos, da der Kernel diese als Mount-Punkte für die Schnittstellen verwendet Versuchen Sie es in einem Verzeichnis mit Daten. Es funktioniert und richtet keinen Schaden an, aber auf das Material, das sich im Verzeichnis befand, kann jetzt nicht mehr zugegriffen werden.]
Beachten Sie, dass der
/sys
und der/proc
Einhängepunkt unbedingt vorhanden sein müssen. Sie sollten aber nichts enthalten. Nächster:Das
dev
Verzeichnis ist nicht ganz dasselbe wieproc
undsys
doch für unsere Zwecke. Wenn Sie der Meinung sind, dass Sie dies speichern sollten, damit Sie dieselben Geräteknoten in Ihrem Backup haben können, liegen Sie falsch . Mach dir keine Sorgen. Nicht kopierendev
. Vor langer Zeit hat Linux so funktioniert, aber es funktioniert nicht mehr.Dies ist eine Art Sonderfall bei den meisten (vielleicht allen) Pi-spezifischen Distributionen wie Raspbian. Es ist eigentlich ein Einhängepunkt für die erste vfat-Partition. Wir werden das separat behandeln. Was auch immer Sie tun, kümmern Sie sich nicht darum, es hier einzubeziehen, denn es ist wieder ein Mount Point.
/run
befindet sich im Allgemeinen auch nicht auf der Festplatte, sondern im Speicher. Vielleicht/tmp
könnte es auch so sein (dies würde ein bisschen SD-Karten-Action sparen), aber auf jeden Fall sind dies, wie die Namen andeuten, keine Orte zum Speichern persistenter Daten. Anwendungen, die sie verwenden, erwarten, dass sie bei jedem Start gelöscht werden.Dies ist insbesondere dann wichtig, wenn Sie eine Sicherung auf einer Festplatte oder einem USB-Stick planen und das Gerät sich in
/mnt
oder befindet/media
(bei der automatischen Bereitstellung wird normalerweise das letztere verwendet), da Sie den Speicherort dieser Geräte im Dateisystem nicht ausschließen Erstellen Sie eine Schleife, die den Inhalt des Laufwerks in sich selbst sichert, bis der Speicherplatz erschöpft ist. Ich denke, esrsync
könnte klug genug sein, etwas so Dummes zu entdecken, aber ich versuche zu vermeiden, die Prämisse zu testen.Zur eigentlichen Sicherung: Erstellen Sie ein Verzeichnis, in das Sie auf der lokal gemounteten Festplatte, einem USB-Gerät usw. Sicherungskopien erstellen möchten - z. B. "pi_backup". Sie können alternativ über
ssh
(siehe unten) oder über ein im Netzwerk eingehängtes Dateisystem an einen Remotestandort sichern. Dies wird jedoch wahrscheinlich beim ersten Mal eine Weile dauern.Wenn die Datei, die die auszuschließende Liste enthält,
/rsync-exclude.txt
1 ist und sich auf Ihrem Laufwerk befindet/mnt/usbhd
, führen Sie die eigentliche Sicherung durch:Beachten Sie, dass ein abschließender Schrägstrich angezeigt wird
pi_backup/
.Dies wird eine Weile dauern und eine Menge Ausgabe produzieren (wenn Sie dies stattdessen in einem Protokoll untersuchen möchten, fügen Sie es an
> rsync.log
).--delete
ist beim ersten Mal bedeutungslos, aber um das Backup auf dem neuesten Stand zu halten, verwenden Sie es. Auf diese Weise wird sichergestellt, dass Inhalte, die Sie später auf dem Pi gelöscht haben, auch aus Ihrer Sicherung entfernt werden. Dasa
setzt die Rekursion in Verzeichnisse und stellt sicher, dass alle Dateiattribute übereinstimmen.-H
ist, um harte Links 2 zu erhalten ,v
ist für ausführliche, weshalb Sie eine Ausgabe erhalten (sonstrsync
ist ruhig). Sehen Sieman rsync
für mehr.Es gibt eine Verknüpfung, mit der Sie die
--exclude-from
Datei überspringen können . Wenn Sie sicher sind, dass sich alle Dinge, die Sie nicht kopieren möchten (/tmp
usw.), auf separaten Dateisystemen befinden, können Sie einfach Folgendes verwenden:-x
wurde eingefügt. Dies ist die Kurzform von--one-file-system
, die angibt,rsync
keine Dateisystemgrenzen zu überschreiten. Persönlich bevorzuge ich die--exclude-from
, aber auf zB Standard Raspbian,--one-file-system
wird gut funktionieren. Sie können beide verwenden, wenn Sie-x
vorsichtig sein möchten : DDas ist kein vollständiges Backup. Es reicht aus, wenn Sie nichts eingegeben haben und das Backup in
boot
Ordnung ist, um das System wiederherzustellen, indem Sie die Karte in einen Computer stecken und ausführen:Sie können dies auch mit einer Karte tun, auf der sich ein neues Bild befindet (vorausgesetzt, es ist dasselbe wie Ihr Basisbild), obwohl dies ein wenig ineffizient ist, wenn Sie das Bild erstellen müssen (da Sie dann das meiste davon überschreiben). Sie können auch eine andere SD-Karte über einen USB-Adapter mit einem solchen Image anschließen und die oben beschriebene Methode verwenden, um eine doppelte Karte zu erhalten.
Wenn Sie Daten
/boot
(z. B. einen benutzerdefinierten Kernel)/boot/config.txt
hinzugefügt haben, möchten Sie diese ebenfalls sichern (ziemlich einfach - da steckt nicht viel dahinter). Tun Sie es einfach separat und wenn Sie wiederherstellen, wird das Zeug in der ersten Partition gespeichert.Sehen Sie hier, ob Sie ein leeres Bild im Raspbian-Stil erstellen möchten, in das Sie dann ein Backup erstellen können . Sie können eine ähnliche Methode verwenden, um eine leere Karte im Raspbian-Stil zu erstellen. Statt mit einer
.img
Datei zu arbeiten, haben Sie es beispielsweise mit einem realen Gerät/dev/sdb
zu tun. Sie müssen also nur die Partitionstabelle mitfdisk
und dann erstellen Format/dev/sdb1
undsdb2
(oder was auch immer) mitmkfs
.Das Kopieren des gesamten Bildes ist jedoch einfacher! Warum sich damit beschäftigen?
Es ist nicht so schwer; Ich habe in 10 Minuten eine leere Karte wiederhergestellt (formatiert nach dem letzten Link). Ja, es
dd
ist einfacher , nur das Ganze zu verwenden (wenn Sie Dinge wie verwirrende Wörter finden ...), ABER es dauert jedes Mal eine Weile, wenn Sie Ihr Backup aktualisieren möchten, da Sie jedes Mal 100% davon ausführen müssen. Unter Verwendungrsync
, sobald eine Sicherung vorhanden ist , ist es die Aktualisierung viel viel schneller, so dass Sie dies einrichten können schmerzfrei jeden Tag über cron passieren. Auch über ein Netzwerk. Alle sechs Stunden. Je öfter Sie es tun, desto weniger Zeit wird es dauern.rsync
überssh
Hier ist ein Beispiel:
"Optionen" wäre z. B.
-av --delete --exclude-from=/rsync-exclude.txt
und "ssh-Optionen" ist das, was Sie normalerweise verwenden (wenn überhaupt). Sie müssen Root - Zugriff haben überssh
diese für die Zwecke einer Systemsicherung zu tun (festgelegtPermitRootLogin=yes
in/etc/ssh/sshd_config
und starten Sie den Server).1 Sie sollten diese Datei behalten. Sie können Kommentare in Zeilen einfügen, die mit
#
oder beginnen;
. Dies kann den eigentlichenrsync
Befehl enthalten, der später kopiert werden kann, damit Sie sich nicht jedes Mal daran erinnern müssen.2 Danke an Kris für den Hinweis, das
rsync
geht nicht automatisch.quelle
mkdir /tmp/backupable && mount --bind / /tmp/backupable
und rsync das? Dies hat auch den Vorteil, dass alle Daten gesichert werden, die an Orten gespeichert sind, die von etwas "beschattet" werden, das dort angebracht ist.--exclude-from
eine bessere Idee ist. Wenn Sie Zeit haben, können Sie dies als separate Antwort aufschreiben, Sie haben meine Stimme und ich kann darauf verweisen. Diese Antwort ist langatmig genug..img
, können Sie; dies und das soll helfen zu erklären, wie sie strukturiert sind und erstellt werden können.Ein funktionierendes Skript aus der Raspberry Community, das von einem Mitglied dort erstellt wurde.
Sie können den Code beliebig oft wiederverwenden und optimieren. Er ist gut dokumentiert und selbsterklärend.
Erwägen Sie, dem ursprünglichen Forum Kommentare hinzuzufügen oder eine eigene Version zu veröffentlichen, um den Inhalt zu verbessern. Nimm ein bisschen, gib ein bisschen.
* Und vielen Dank für die Rückgabe von AndersW (Click for GIT-Skript)
quelle
rsnapshot
klingt vielversprechendrsync
rsnapshot
Ich habe die Antwort von @goldilocks auf rsync für die Sicherung auf dem pi angepasst. Ich sichere auf einer
ext4
Partition auf einer Festplatte, die auf dem Pi montiert ist. Wenn die Festplatte nicht gemountet ist, kopiert rsync in das Mount-Verzeichnis (bis die SD-Karte voll ist). Ist die Festplatte nicht imrw
Modus gemountet, werden zahlreiche Fehlermeldungen ausgegeben. Beides ist nicht wünschenswert, daher überprüfe ich, ob meine Partition imrw
Modus gemountet ist, bevor ich fortfahre .HINWEIS 03.03.2015 Ich habe meine Antwort so geändert, dass Hardlinks korrekt kopiert werden. Das Original funktionierte, konvertierte aber viele Hardlinks in Dateien. Dies verschwendet nicht nur Speicherplatz, sondern beeinträchtigt auch viele Verwendungen, bei denen davon ausgegangen wird, dass die Hardlinks vorhanden sind. (Mein aktuelles Bild hat 869 Links, viele davon in Raspbian selbst.)
Mein Skript dazu folgt. (Meine Partition ist
PiData
gemountet auf/mnt/PiData
Wiederherstellen (oder Aktualisieren eines anderen Pi) mit den folgenden Schritten:
Ich habe das verbessert
rsync-exclude.txt
, um unnötige Dateien zu beseitigen.Die erste Gruppe sind die von @goldilocks https://raspberrypi.stackexchange.com/users/5538/ dokumentierten Verzeichnisse.
Die zweite Gruppe sind die Dateien und Verzeichnisse, die von OS X erstellt werden, wenn ich mit AFP (Apple Filing Protocol) auf meinen Pi zugreife. (Diese sind unter OS X normalerweise unsichtbar, unter Raspbian jedoch nicht. Auf jeden Fall ist kein Backup erforderlich.) Auch wenn Sie AFP niemals verwenden, richten diese keinen Schaden an.
Die dritte Gruppe sind Dateien, die nicht gesichert werden müssen (und auf keinen Fall auf einen anderen Pi kopiert werden dürfen). Beispiele fake-hwclock.data, RPi-Monitor-Berichte. Sie werden wahrscheinlich andere haben.
quelle
Ich habe drei Pis in meinem lokalen Netz und muss sie regelmäßig mit cron sichern, wenn sie in Betrieb sind. Aus diesem Grund habe ich ein Skript erstellt, mit dem Sie dd-, tar- und rsync-Backups erstellen und wiederherstellen können. Ich bevorzuge rsync für meine Backups, aber andere Leute bevorzugen dd oder tar. Es wird bereits von vielen Leuten benutzt. Hoffe, es ist auch für andere nützlich :-) raspibackup - Raspberry erstellt Backups von sich selbst
quelle
Hier ist unser stabiles Tool für solche Zwecke: https://github.com/aktos-io/aktos-dcs-tools
Dieses Tool wird auf schriftliche
make ssh
Verbindungenmake backup-root
,make mount-root
von entfernten Orten im Kopf zuerst, und dann werden die lokalen Sitzungen hinzugefügt. So werden lokale Sicherungen, direkte Remote-Sicherungen und Proxy-Remote-Sicherungen unterstützt. Backups werden inkrementell erstellt (nur Diffs werden übertragen) und Backup-Verzeichnisse sind eigenständig (wählen Sie einfach ein Verzeichnis / eine Version zum Wiederherstellen aus, jedes Verzeichnis verfügt über ein vollständiges Backup). Natürlich haben Sie Versionen (backup.last-0 ist die neueste). Sie können den Sicherungsvorgang jederzeit unterbrechen und später fortsetzen.Hier sind die Anweisungen für Ihr spezielles Problem:
BEARBEITEN
Jetzt wurde ein neues Ziel hinzugefügt: Sie können mit einem Befehl eine physische SD-Karte aus Ihren Backups erstellen:
Befolgen Sie die Anweisungen, erstellen Sie Ihre SD-Karte und starten Sie RaspberryPi mit dieser neu erstellten SD-Karte.
quelle
Hier ist ein völlig anderer Ansatz. Sie können mit LVM ( L großartigem Puzzle - V olume M anager) , um konsistenten Backups zu machen. Neben anderen Verbesserungen wie dem einfachen Hinzufügen, Erweitern und Reduzieren des Speichers oder dem Wiederherstellen eines früheren Status des Betriebssystems aus einem Snapshot können Sie auch Sicherungen erstellen. Sie müssen sich keine Gedanken über dynamisch geänderte Dateien während der Sicherung machen, indem Sie Dateisysteme auf schreibgeschützt setzen, bestimmte Verzeichnisse ausschließen oder etwas anderes. Mit LVM erstellen Sie einfach einen Snapshot, hängen diesen Snapshot ein und sichern ihn mit der von Ihnen bevorzugten Methode. Sie können mit eine Kopie erstellen, mit
cp -a
einen Spiegel erstellen, mitrsync
ein Archiv erstellentar
oder mit ein Bild erstellendd
. Angenommen, Sie haben ein Sicherungsgerät aktiviert/mnt/usbhd/pi_backup/
, können Sie beispielsweise Folgendes tun:Das Einrichten von LVM ist nur einmal mit geringem Aufwand möglich . Wie das geht, können Sie unter Einfache Backups und Snapshots eines laufenden Systems mit LVM nachlesen .
quelle
Ich habe ein Backup-Tool gefunden , das installierbare Images erstellt.
Es hat auch Dienstprogramme zum Mounten und Verkleinern von Bildern.
Dies kann für andere nützlich sein
Die dazugehörige Dokumentation ist sehr kurz, daher stelle ich Folgendes fest:
ext4
formatierte Partition auf Ihrem Pi in/mnt
oder/media
(jedes Format, das große Dateien zulässt und von Pi unterstützt wird, z. B. exFAT oder ein Netzwerklaufwerk, kann verwendet werden)./mnt/Image/BusterBackup.img
Ich habe das Original leicht modifiziert (um Mountpunkte zu kopieren), Partitionsversätze und -größen korrekt zu berechnen und ein paar Kommentare hinzugefügt.
quelle
Öffnen Sie das Terminal und geben Sie 'lsblk -f' ein.
Dies sollte alle angeschlossenen Speichergeräte anzeigen.
Geben Sie dann 'dd if = / dev / [der Name Ihrer SD-Karte] bs = 1M' ein.
Dies wird eine Weile dauern, daher möchten Sie es möglicherweise im Hintergrund ausführen.
Genau so sichern Sie Ihre SD-Karte unter Linux.
quelle