Ich mag es, eine ganze Partition oder eine ganze Festplatte auf eine größere externe Festplatte zu klonen, aber ich mag es, eine Sparse-Datei zu erstellen. Ich verwende es oft dd
zum Klonen, aber es unterstützt keine spärlichen Dateien. Als Workaround habe ich Folgendes verwendet:
cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw
Dies ist jedoch für meinen Geschmack etwas zu knifflig und erlaubt mir nicht, den Vorgang fortzusetzen, wenn der Vorgang abgebrochen wird. Es ist lustig, dass es ein NTFS-Tool für dieses ( ntfsclone
) gibt, aber kein solches Tool für die nativen Dateisysteme von Linux (EXT2-4).
Gibt es dafür ein besseres Tool, z. B. eine dd
Variante mit geringer Unterstützung? Ich suche keine proprietäre Software für Festplatten-Backups, sondern möchte einfach eine spärliche Klon-Kopie erstellen, die ich bei Bedarf als Loop-Gerät einbinden kann.
quelle
cp
, ist mir nie aufgefallen, dass Sie ein Disk-Image dünn kopieren könnten. Ich habe sie immer nur komprimiert, wenn ich Platz sparen wollte. Warum ist das in einer Frage keine Antwort?Antworten:
Sie möchten
dd_rescue
.quelle
dd_rescue
Online habe ich herausgefunden, dass es auch ein anderes Tool namens gibtddrescue
(ohne Unterstrich) gibt, das unabhängig davon entwickelt wurde,dd_rescue
aber im Grunde dasselbe zu tun scheint. Ich erwähne das hier nur als allgemeines FYI.dd_rescue
und dasddrescue
ist nicht dasselbe. Theoretisch machen sie den gleichen Job, aber im Allgemeinen hatte ich mit dem älteren / Original mehr Glückdd_rescue
.-s
und die Position zum ursprünglichen Befehl hinzufügen . (So würde es aussehendd_rescue -a -b 8M -s 42000k /dev/sda1 /mount/external/backup/sda1.raw
.)Der Vollständigkeit halber die Aufforderung zur Rettung . Mit der Option
--sparse
oder-S
kann das Ziel spärlich geschrieben werden:Oder mit langer Option:
Oder wenn Sie MiBs bevorzugen :
Um die Rettung zu unterbrechen und fortzusetzen, können Sie auch eine Protokolldatei verwenden:
Beachten Sie, dass GNU
ddrescue
unddd_rescue
verschiedene Programme sind. GNUddrescue
scheint jedoch weiter verbreitet zu sein. Zum Beispiel ist es bereits mit verpackt GRML gepackt .quelle
dd if=sda1.raw of=/dev/sdb1
. Um ddrescue für die Wiederherstellung zu verwenden, ändern Sie einfach die Quelle / das Ziel, das Sie für die Wiederherstellung verwendet haben, in die neue Quelle / das neue Ziel, vorzugsweise mit einer neuen Protokolldatei. Wenn möglich (oft nicht), können Sie natürlich ddrescue verwenden, um Daten direkt von der fehlerhaften Quelldiskette auf eine Ersatzdiskette zu kopieren.2007 wurde ein Patch für die Unterstützung spärlicher Dateien in GNU dd angeboten, der jedoch offenbar nicht in coreutils (zumindest nicht ab 8.4) aufgenommen wurde. Ich bezweifle, dass sich dd seitdem zu sehr geändert hat, der Patch könnte ohne viel Arbeit gegen die aktuelle Version angewendet werden.
Ich bin auch wirklich beeindruckt von der kreativen Verwendung von
cp
in Ihrer Frage, und es brachte mich auf die Spur, es zu verwenden, um die Wiederaufnahme zu vollenden (hier von ~ 80 Millionen in die Quelle):Edit: kratz das. Die zweite
dd
Möglichkeit wäre natürlich die Suche nach der falschen Position in der Ausgabedatei, da sie nicht die gleiche Länge wie die Eingabe hat.quelle
cp
- danke!Füge nur meine 2 Cent hinzu. Eine andere Möglichkeit, eine Sparse-Datei von einer Raw-Festplatte zu erstellen, besteht darin, mit qemu-img Folgendes zu verwenden:
Sie können dies auch auf einer einzelnen Partition verwenden. Sie haben auch die Möglichkeit, die Raw-Festplatte / Partition in ein anderes Format zu konvertieren, das von qemu-img unterstützt wird (QCOW2, VHD [x], vmdk usw.).
quelle
Eine andere Option ist rsync . Beispielsweise:
Erläuterung:
-S
/--sparse
um spärliche Blöcke beim Schreiben zu überspringen-P
/--partial --progress
um den Fortschritt anzuzeigen und teilweise übertragene Dateien zu behalten--copy-devices
um Geräteinhalte zu kopierenSie können hinzufügen
--append
, um eine unterbrochene Kopie fortzusetzen (oder--append-verify
um die Prüfsumme für neue und alte Datenübereinstimmungen zu bestätigen).Edit : Ich habe gerade festgestellt, dass copy-devices.diff in Betracht gezogen wird und möglicherweise auf vielen Systemen nicht vorhanden ist (obwohl es von Fedora , Ubuntu , Debian und anderen enthalten ist)
quelle
Hinweis: Dies funktioniert aus den in den Kommentaren beschriebenen Gründen nicht. Ich lasse es hier als Referenz.
Überwachen Sie die Statistik von dd mit kill -USR1:
Fortsetzen mit Überspringen / Suchen:
Ohne $ i_bytes wäre die Fortsetzung schwieriger. Es ist wahrscheinlich am einfachsten, die dd-Statistiken in einer Datei zu protokollieren, falls der Computer abstürzt oder was auch immer.
quelle
cp
Befehl überschreibt einfach die vorhandene Datei, nicht wahr? Ich kenne dieskip
und andere Möglichkeiten vondd
. Das Problem ist dercp
Teil.Es gibt xfsdump und xfsrestore für XFS, die seit geraumer Zeit ein natives Linux-Dateisystem sind.
quelle
Warum nicht einfach:
quelle