Gerade im Disaster-Recovery Bereich oder auch in jeder Situation, in der Daten eines (oder mehrerer) Server über das Netzwerk hinweg zu einer anderen Maschine kopiert werden müssen, verlangt machmal nach trickreichen Kommandos, um effizient und sicher Daten zu transferieren. Im Folgenden werden zwei Kommandos – dd und tar – in Verbindung mit ssh vorgestellt, mit denen interessante Ergebnisse umgesetzt werden können.
Szenario 1:
Angenommen, es sollen „rohe“ Partitionen von A nach B kopiert werden, so kann dies mit folgendem Befehl erfolgen:
dd if=/dev/SOURCE | ssh USER@IP_OR_HOSTNAME "dd of=/dev/DEST"
wobei SOURCE ein Quell-Blockgerät ist und DEST das Zielblockgerät auf der Remote-Maschine.
Interessant in diesem Zusammenhang ist, dass die Parameter if= und of= auch wahlweise auf Dateien (raw-Images) verweisen können. So ist zum besipiel auch eine Konvertierung von LVM über das Netzwerk in ein raw-Image-Format möglich. Sei es zur Sicherung der kompletten Partition, aber auch zur Vorlage der Konvertierung in ein qcow2-Format (interessant bei QEMU/KVM).
Szenario 2:
Möchte man rekursiv ein Verzeichnis mit all seinen Rechten (chmod/chown) 1:1 auf einen entfernten Rechner kopieren, so kann dies schnell und effizient mit dem tar-Befehl in Kombination mit ssh erfolgen
tar cvpf - /SOURCE | ssh USER@IP_OR_HOSTNAME "cd /DEST; tar xpf -"
Sowohl /SOURCE als auch /DEST sind Verzeichnisse auf dem Quell- und Zielserver, die beide exisitieren müssen.
Zusammenfassung
In beiden Szenarien wurden nur die minimal notwendigen Flags der einzelnen Parameter verwendet. So kann bei ssh auch wie Gewohnt ein Port, Hostname oder andere Parameter ergänzt werden. Auch Angaben zur Blockgröße bei dd oder Kompression bei ssh/tar wurden hier der Einfachheit-halber erst einmal weg gelassen.
Vorteil der zweiten Variante zur ersten ist übrigens, dass auf diese Weise auch defekte Partitionen kopiert werden können. dd bricht in der Regel bei Input/Output Fehlern den Kopiervorgang ab. Möchte man eine solche Partition dann denoch „retten“, so kann man mittels losetup/kpartx, wie in diesem Artikel beschrieben, eine Partition aufschlüsseln und unter /SOURCE (z.B. /mnt) mounten.
Vielen Dank für die nützlichen Tipps! Wirklich interressant, was man Ales so anstellen kann. Werde die mal testen.
Im Gegensatz zu tar, was beschädigte Dateien evtl. weglässt, eignet sich bei defekten Quellen ddrescue. Damit werden zumindest die lesbaren Teile einer Datei übertragen.
Mini-Hint: tar kann mit -C automatisch vor dem Extrahieren ins Zielverzeichnis wechseln. Das „cd …“ im zweiten Kommando entfällt dann.
Danke für den Tipp. Gut zu wissen. Ich schaue nachher mal in die Manpage tu tar 🙂