Übertragen von Inhalten von Blockgeräten

7

Zum Zwecke der Sicherung möchte ich (mehrere) Partitionen der gesamten Festplatte über einen SSH-Link übertragen. Die Quelle ist ein Blockspezialgerät und das Ziel sollte eine reguläre Datei sein. Gängige Tools scheinen dafür jedoch ungeeignet zu sein:

  • scp werde mich beschweren not a regular file
  • tar wird versuchen, Geräte-Inodes auf der Zielseite neu zu erstellen
  • rsync sagt skipping non-regular file

Meine beste Wette ist derzeit nceine Portweiterleitung oder ein catAufruf auf der Remote-Seite pro Partition. Dies bedeutet einen Kennworteintrag pro Partition, sofern nicht öffentliche Schlüssel eingerichtet werden. Gibt es eine elegantere Lösung?

Die Umgebung wäre ein vernünftiges Linux-Live-System. Momentan habe ich zufällig ein Debian-Keuchen herumliegen, aber es sollte nicht zu spezifisch dafür sein.

MvG
quelle
Bitte geben Sie das Betriebssystem, die Distribution und die Version an, mit denen Sie arbeiten. Obwohl ich vielleicht eine Alternative habe, möchte ich sicher sein, dass sie für Ihren speziellen Fall gilt.
mdpc
@mdpc: Linux, zB Debian keuchend. Meine Frage wurde aktualisiert, um diese Informationen aufzunehmen.
MvG

Antworten:

10

Sie könnten durch SSH leiten. Beispiel mit dd:

dd bs=1M if=/dev/disk | ssh -C target dd bs=1M of=disk.img

Wenn die Netzwerkverbindung während der Übertragung unterbrochen wird, können Sie fortfahren, wenn Sie wissen, wie viel kopiert wurde. Zum Beispiel, wenn Sie sicher sind, dass mindestens 1000MiBbereits übertragen wurden (überprüfen Sie die Dateigröße von disk.img):

dd bs=1M skip=1000 if=/dev/disk | ssh -C target dd bs=1M seek=1000 of=disk.img

dd ist nur ein Beispiel, es funktioniert genauso gut mit anderen Befehlen, solange sie mit Pipes arbeiten.

Frostschutz
quelle
Warum würden Sie verwenden dd? Dinge zu verlangsamen?
Gilles 'SO - hör auf böse zu sein'
Ich liebe dd . Es funktioniert großartig und ich habe keine Beschwerden über seine Leistung. YMMV.
Frostschutz
Welchen Vorteil bringt es gegenüber dem einfacheren, weniger fehleranfälligen </dev/disk ssh -C target 'cat >disk.img', der das zusätzliche Fehlerrisiko kompensieren würde ( ifTippfehler wie ofein Biggie)?
Gilles 'SO - hör auf böse zu sein'
2
Zum einen können Sie damit fortfahren. Aber wir streiten hier Meinungen. Es ist zwecklos. Du magst nicht dd, du benutzt etwas anderes. So einfach ist das. Wie für Tippfehler, können Sie genauso gut verwirren <und >in vielen Fällen ist es nur als katastrophal.
Frostschutz
Wenn Sie eine schnelle Verbindung zwischen den Computern haben, verlangsamt die -COption für sshwahrscheinlich Ihre Übertragung.
Cameron Tacklind
3

Ich würde das Pufferprogramm installieren (falls es nicht bereits in Ihrer Distribution vorhanden ist), wenn Sie versuchen, über eine Ethernet-Verbindung zu übertragen. Es ist wie dd, aber weitaus besser und schneller. Grundsätzlich ist es so programmiert, dass es gleichzeitig mit einem gemeinsam genutzten Speicherpuffer liest und schreibt. Ich habe dies für Band-Dumps verwendet und es hat ungefähr 10% Übertragungszeit gespart. Die Befehlszeile wäre:

  buffer -i /dev/disk -m 100m | ssh -C target buffer -o disk.image -m 100m

Es stehen weitere Optionen zur Verfügung. Die Standardblockgröße beträgt 10 KB. Das oben genannte weist 100 MByte gemeinsam genutzten Speicher zu. Möglicherweise müssen Sie entweder diesen Parameter oder Ihre Konfiguration anpassen, um dies zu ermöglichen.

WARNUNG: Die Übertragung einer ACTIVE-Partition auf diese Weise ist problematisch. Stellen Sie daher sicher, dass die zu übertragende Partition NICHT gemountet ist.

mdpc
quelle
2
Wie kann ich fortfahren, wenn die Netzwerkverbindung während der Übertragung unterbrochen wird?
mug896
Wenn Sie eine schnelle Verbindung zwischen den Computern haben, verlangsamt die -COption für sshwahrscheinlich Ihre Übertragung.
Cameron Tacklind