パーティション全体またはハードドライブをスパースファイルに複製する

パーティション全体またはハードドライブをスパースファイルに複製する

私はパーティション全体またはハードドライブ全体を大きな外付けディスクに複製するのが好きですが、スパースファイルを作成するのが好きです。複製時に頻繁に使用されますが、ddスパースファイルはサポートされていません。解決策として、次のようなものを使用しました。

cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw

しかし、これは私にとってあまりにも難しく、中断されたプロセスを再開することはできません。興味深いことに、これを行うNTFS用のツール(ntfsclone)がありますが、Linuxの基本ファイルシステム(EXT2-4)用にはそのようなツールはありません。

ddサポートが不足しているバリエーションのようなより良いツールはありますか?ディスクバックアップ用の独自のソフトウェアを探す代わりに、必要に応じてループデバイスとしてインストールできる希薄な複製コピーを作成したいと思います。

答え1

欲しいdd_rescue

dd_rescue -a -b 8M /dev/sda1 /mount/external/backup/sda1.raw

複製はいつでも中断され、Ctrl-C現在の場所を表示できます。この値は、-s元のコマンドと場所を追加して再起動するときに使用できます。

dd_rescue -a -b 8M -s 42000k /dev/sda1 /mount/external/backup/sda1.raw

ログファイルとして機能する3番目のファイル名を指定する方が簡単です。再起動すると、dd_rescueこのログファイルが読み込まれ、中断された部分から再起動されます。

答え2

完全性を求めてください。救う--sparseor フラグは、-Sターゲットへのリーンな書き込みを許可します。

$ ddrescue -S -b8M /dev/sda1 /mount/external/backup/sda1.raw

または、長いオプションを使用してください。

$ ddrescue --sparse --block-size 8M /dev/sda1 /mount/external/backup/sda1.raw

またはあなたが好むならミップ:

$ ddrescue -S -b8Mi /dev/sda1 /mount/external/backup/sda1.raw

中断および回復 回復を許可するには、ログファイルを使用することもできます。

$ ddrescue -S -b8Mi /dev/sda1 /mount/external/backup/sda1.raw ~/sda1.rescue.log

GNUddrescueとGNUはdd_rescue別のプログラムです。しかし、GNUはddrescueより広範に見えます。たとえば、梱包されています。GRML

答え3

一つあるパッチ提供Sparseファイルのサポートは2007年のGNU ddで可能でしたが、まだcoreutilsには含まれていないようです(少なくとも8.4では含まれていません)。私はそれ以来、ddがあまりにも変更されているので、多くの作業がなくてもパッチが現在のバージョンで動作できると思います。

また、あなたの質問を創造的に使用することに感銘を受けましたcp。これにより、復元を完了するために使用できるようになりました(ここでは〜80Mからソースに復元されます)。

cp --sparse=always \
  <(dd if=/dev/sda1 bs=8M skip=10) /dev/stdout \
  | dd bs=8M seek=10 of=/mount/external/backup/sda1.raw

編集:最初から始めます。 2つ目はddもちろん、長さが入力の長さと異なるため、出力ファイル内の誤った場所を見つけることです。

答え4

2セントを追加するだけです。生ディスクからスパースファイルを生成する別の方法は次のとおりです。qemu-img次のようなものを使用してください。

qemu-img convert -f raw /dev/sda /tmp/sda.raw

単一パーティションでも使用できます。また、rawディスク/パーティションをqemu-imgでサポートされている他の形式(QCOW2、VHD [x]、vmdkなど)に変換することもできます。

関連情報