web-dev-qa-db-ja.com

ddを使用してディスクを同じディスクにバックアップする

ddを使用してコンピューターのハードドライブをバックアップしようとしましたが、かなり紛らわしい結果になりました。私は複数のソースで見ました(例: http://www.backuphowto.info/linux-backup-hard-disk-clone-ddhttp://debianhelp.co .uk/ddcommand.htm )ある種のものが含まれていること:

dd if=/dev/sda of=~/backup.img

1)私が非常に混乱していない限り、これはディスク全体をディスク上のファイルにバックアップしようとしますね。

私はこの方法を使おうとしましたが、スペースを節約するために最初に出力を圧縮しました。すべての空きデータをコピーしようとして圧縮ファイルが大量のスペースを占有するのを防ぐために、zerofreeを使用してディスクのすべての未使用スペースに0を書き込みました。私のディスクの合計容量は約320GBで、そのうち約100GBが使用され、残りは約220GBです。

次のコマンドを使用しようとしたとき:

dd if=/dev/sda | gzip -c > ~/image.img.gz

バックアップを終了する前に、バックアップされたファイルのサイズが約160GBに達しました(外部ディスクにバックアップする方法を理解することを目的として、それ以来成功したタスクです)。

2)なぜバックアップがそれほど多くのスペースを占めるのでしょうか? ddが書き込み先のファイルを確認し、それもバックアップしようとするためですか?または、zerofreeを適切に使用できなかった可能性があります。そのため、それを防ぐための努力にもかかわらず、バックアップされているランダムなジャンクデータがたくさんありますか?

3
Ben Sandeen

変更中のハードドライブを正確に複製することはできません。

私が非常に混乱していない限り、これはディスク全体をディスク上のファイルにバックアップしようとしますね。

はい、試してみます。 ddコマンドは、(ドライブから)ブロックを読み取り、ブロックを圧縮し、(そのドライブ上のファイルに)ブロックを書き込み、次のブロックに進みます。イメージには、部分的に書き込まれたbackup.imgと、そのファイルへの部分的に書き込まれたファイルシステムポインタが含まれます。

注:ここでは詳細が関係ないため、ddgzipの間のパイプバッファリングを大幅に簡略化しました。

なぜバックアップがそれほど多くのスペースを占めるのでしょうか?

考えられる原因は、部分的に書き込まれたbackup.imgファイルをコピーしようとしていることです。その他の要因には、使用しているファイルシステムのファイルシステム構造に関する高度な知識が必要です。

3
Steven