Wie erstelle ich ein Image eines Live-Systems über SSH?

Wie erstelle ich ein Image eines Live-Systems über SSH?

Ich habe eine Frage zu einem FreeBSD-Server, auf den ich momentan nicht zugreifen kann. Da wir aber gerne ein paar neue Sachen ausprobieren möchten, wollen wir zunächst ein Backup dieses Systems erstellen.

Die Frage ist: Gibt es eine Möglichkeit, über SSH ein Disk-Image von der gesamten Serverfestplatte zu erstellen, die derzeit ein Live-System ist?

Wenn ja: Ich möchte wissen, wie das geht.

Antwort1

Unter Linux ist das eigentlich nicht möglich. Unter Windows ist es aufgrund der Volumeschattenkopie möglich.

Wenn Ihr System LVM verwendet, können Sie einen Snapshot erstellen und rsyncdiesen dann für eine atomare Kopie der Dateien übertragen. Sie müssten jedoch Partitionen/den Bootloader wiederherstellen.

Die einfachste Methode, wenn es doch gemacht werden muss, ist es, ddes zu kopieren:

dd if=/dev/sda | ssh user@remotehost 'dd of=/path/to/output'

Und um dann 100 % sicherzugehen, dass Ihre Dateien in Ordnung sind, rsyncvon der laufenden Datei bis zum Laufwerk, ddauf das Sie das Image übertragen haben, nachdem Sie es gemountet haben. (Ich habe rsyncdie Unterschiede hunderte Male ohne negative Folgen übersprungen, aber das gilt nur für stark lesebasierten Serverzugriff.)

Antwort2

VerwendenDump(8)um einen Snapshot des (Datei-)Systems zu erstellen.

dump -0aLf /path/to/dumpfile /

Dadurch wird ein Live-Dump des Root-Dateisystems erstellt und unter /path/to/dumpfile gespeichert. Dieser Dump kann per SSH auf einen anderen Computer übertragen werden. Oder Sie können dies in einem Rutsch tun, indem Sie Folgendes verwenden.

dump -0aLf - | ssh my.backup.server dd of=/path/on/my/server/dumpfile

Dies kann später wie folgt wiederhergestellt werden:

cd /where/I/should/restore
restore -xf /path/to/dumpfile

Anwendungen wie Datenbanken müssen separat behandelt werden. Bei einer MySQL-Datenbank können Sie beispielsweise mit mysqldump eine Textdatei mit SQL-Befehlen erstellen, die auf einem anderen MySQL-Server ausgeführt und dort importiert werden können. Andere Datenbanken haben ähnliche Methoden.

Antwort3

wenn auf Ihrem Zielcomputer nur ein Root-Dateisystem kopiert werden muss, verwenden Sie einfach etwas wie:

rsync --numeric-ids --delete -vax source_machine:/ /target_dir

zweimal oder öfter. Der zweite Durchlauf verwendet bereits zwischengespeicherte Einträge aus dem ersten Durchlauf, geht sehr schnell und liefert mit einigen Einschränkungen fast einen echten Snapshot. Sie können die „Atomizität“ beobachten, indem Sie „rsync“ einfach beliebig oft wiederholen. Es gibt meist nur sehr wenige Dateien (Logdateien und dergleichen), die sich zwischen den Iterationen wirklich geändert haben (und daher kopiert/gelöscht werden müssen).

verwandte Informationen