回答:
可能ですが、最初にディスクを準備する必要があります。秘trickは、スパースファイルまたは圧縮を使用することです。この方法は時間がかかり、高いI / Oを生成します。あなたの場合(1 TB HDDで2GBを使用)、ファイルのコピー(おがくずのコメントで示唆されているように)はおそらくより良い解決策でしょう。一方、たとえば1 TBから使用中の850 GB、多くの小さなファイルがあり、MBR、パーティションテーブル、メタデータなどを一度にバックアップしたい場合、私の方法は合理的な保存方法です。画像ファイルに少なくとも150 GB(データが十分に圧縮されていない限り、500 GBのHDDに収まらない)。
これは、ディスク使用量の多いユーザー向けに書いています。また、ソースドライブが正常であり、空のスペースを上書きできるようにする必要があることに注意してください。私は主にバックアップ用のソリューションを提供していますが、リカバリやフォレンジック用ではありません。時間とI / Oコストは、イメージの作成中だけでなく、イメージがディスクに書き戻される場合(場合)にも支払われます。方法が適切な場合は、よく考えてください。
クローンを作成する必要/dev/sdb
があり、いくつかのパーティションがあるとしましょう:/dev/sdb1
、/dev/sdb2
…
スパースファイルまたは圧縮を最大限に活用するには、空のスペースをゼロで上書きする必要があります。
## Most commands need sudo.
mount -o rw /dev/sdb1 /mnt
dd if=/dev/zero of=/mnt/zero_file bs=32M
## Long wait here. Expect "no space left on device".
sync
rm /mnt/zero_file
umount /dev/sdb1
## Repeat this with /dev/sdb2, /dev/sdb3 etc.
Windowsパーティションの場合、Windowsの休止状態に起因する問題が発生する場合があります。これを読んでください。
パーティションレイアウトに大きなギャップがある場合は、ゼロで埋める必要もあります。スワップパーティション(ある場合)は、結果のイメージをできるだけ小さくするために特別な処理が必要です。およびなどのWindowsファイルはhiberfil.sys
、作成前に削除される場合があります。ここではこれらのケースについて詳しく説明しません。pagefile.sys
swapfile.sys
zero_file
この方法は、ターゲットファイルシステム(イメージファイルが保存される場所)がスパースファイルをサポートしている場合に使用できます。スパースイメージファイルを生成するには、次を呼び出します。
## dd probably needs sudo here.
dd if=/dev/sdb of=/foo/bar/my_image.dd bs=512 conv=sparse
(編集:元々ありましたがbs=32M
、これは良い選択ではありませんconv=sparse
。この質問を比較してください。)
画像を書き戻すには:
## dd probably needs sudo here.
dd if=/foo/bar/my_image.dd of=/dev/sdb bs=32M
利点:
mount -o offset=…
または使用kpartx
)して、内部のファイルにアクセスできます。短所:
cp --sparse=always
)。画像を生成するには:
## dd probably needs sudo here.
dd if=/dev/sdb bs=32M | gzip -c > /foo/bar/my_image.dd.gz
画像を書き戻すには:
## dd probably needs sudo here.
gzip -cd < /foo/bar/my_image.dd.gz | dd of=/dev/sdb bs=32M
これらのコマンドはdd
、gzip
のみを使用して構築できます。dd
32 MiBバッファーを確保するために使用しました。
利点:
短所:
この回答の最初のバージョンを書いたずっと後に、virt-sparsify
ツールがあることを知りました。便利そうです。
進行状況を監視するにはdd
、status=progress
オペランドで呼び出します。dd
既にそれなしで実行されている場合(たとえば、dd
サポートしていないstatus=progress
か、使用するのを忘れた場合)、USR1
ツールに信号を送信します。
kill -s USR1 $(pidof dd)
必要に応じて繰り返します。
別の方法として、あなたはpv
読むために使うことができます。例:
pv -B 32m /dev/sdb | dd of=/foo/bar/my_image.dd bs=512 conv=sparse
pv -B 32m /dev/sdb | gzip -c > /foo/bar/my_image.dd.gz
gzip --fast
最高の使用を圧縮するために、高速使用を圧縮しますgzip --best
。man gzip
その他のオプションを参照してください。
可能であればpigz
代わりに使用してくださいgzip
。pigz
複数のプロセッサコアを利用できるため、これにより速度が向上します。必要に応じて別のコンプレッサーを使用できます。
ターゲットディスクが既にフォーマットされている場合、2番目のディスクは1番目と同じマシンに接続され、マウントされます。LinuxまたはMacを実行している場合:
rsync -avP --ignore=/media/disk2 / /media/disk2
ターゲットディスクが既にフォーマットされている場合、2番目のディスクはフォーマットされて別のPCにマウントされ、LinuxまたはMacを実行している場合:
rsync -avP / user@ip_of_disk2_host:/media/disk2
これは、基礎となるドライブに関係なく、ファイルのバックアップだけが必要であることを前提としています。これにより、ファイルごとのバックアップが行われ、わずか2 GBのデータでかなり高速に実行されます。