ddを使用してさまざまなストレージパーティションのベアメタルリカバリを実行する

ddを使用してさまざまなストレージパーティションのベアメタルリカバリを実行する

定期的にバックアップされるディスクがあります。ディスクは複数の異なるパーティションで構成されます。私はいつもddコマンドを使って/ dev / sdXを一度にバックアップしましたが、すべてが順調に進みました。時には、これらのバックアップを使用してディスクを別のディスクに複製することもあります。

しかし、パーティションの1つは非常に大きく、ほとんど変更されないことがわかりました。単一のパーティションのみをバックアップしてバックアップのサイズを減らすことができれば、より良いでしょう。

もちろん、ddは/dev/sdX1、/dev/sdX2などのみバックアップできます。しかし、私はまだこれらのバックアップをベアメタルから新しいディスクに複製できるようにしたいです。現在のディスク全体をバックアップすると、これを正しく実行できますが、パーティションのみをバックアップすると状況が異なります。

どうすればいいですか?それでもMBRのようなものを保存する必要がありますか?

ベストアンサー1

Linuxのddの場合、データがファイル間で転送されるのかブロックデバイス間で転送されるのかは重要ではありません。

バックアップを作成するときは、次のようにディスクイメージに保存するとします。

dd bs=128M if=/dev/sda of=backup.dd

注:これにより、ディスクの最初の512(MBR)または16k(GPT)バイトのMBRおよびGPTデータもコピーされます。

Linuxの良い点は、「仮想」ループデバイスを持つブロックデバイスのように画像ファイルを使用できることです。

udisksctl loop-setup --file backup.dd

これで、外部バックアップと同様に、バックアップがファイルマネージャに表示されます。一般に数字/dev/loopXと呼ばれますX。循環機器にも仕切り/dev/loopXp1などがあります。

これで、バックアップの個々のパーティションを更新できます。

dd bs=128M if=/dev/sda1 of=/dev/loopXp1

更新後にファイルを「削除」します。

udisksctl loop-delete --block-device /dev/loopX

しかし、待ってみてください。さらに、特別なファイルシステムツールを使用すると、すべての空き領域をスキップし、パーティションの使用済み部分のみをコピーして更新を高速化できます。私はこれをお勧めします(他の人はどう思うかわかりません):

  • 外部2/3/4:e2image -rap /dev/sda1 /dev/loopXp1
  • NTFS:ntfsclone --overwrite /dev/loopXp1 /dev/sda1

しかし、ちょっと待ってください。それに加えて、より多くのものがあります。使用率に応じて、rsyncを使用してバックアップを更新することもできます。これを行うには、ファイルシステムをバックアップファイルにマウントする必要があります(ループが設定された後にループが削除される前)。

udisksctl mount -b /dev/loopXp1
rsync -av wherever/dev/sda1/is/mounted/ wherever/dev/loopXp1/is/mounted/
udisksctl unmount -b /dev/loopXp1

おすすめ記事