お得情報  | ➡

OSをまるまるバックアップ。ddコマンドの使い方

Tips

Windows Subsystem for Linuxの普及でlinuxも大分身近になってきました。今回はOSをまるまるイメージバックアップできるツールddコマンドを使用してOSのクローンを保管しておく方法についてご紹介します。

入力するコマンド例

コマンド発行例は以下3コマンド(詳細はこれ以下の解説を読んでください)

このマニュアルでは
コマンドは青色で表示されている

lsblk
cd /media/ubuntu/USBHDD
dd if=/dev/sdx of=./windows7_backup.img ibs=10M obs=10M

OSのイメージバックアップの手順

lsblkによりディスクの確認

この場合
sda / sdbがハードディスク

接続されているハードディスク個体は、中身をみてもいいが容量から判別可能。

外付けUSBハードディスクを再接続(オプション)

マウントポイントに文字が入っていればいいが、マウントポイントに文字が入っていなければ、中身のファイルにアクセスできる状態にない。USBドライブの場合。再接続で自動的にマウントされる場合が多い

この場合HDDは
/media/zlixxxxxx/USB_HDD
にマウントされている
まれに自動マウントされない場合

mount /dev/sdb1 /kara_no_folder

のようにマウントする必要がある

マウントされている場所に移動(解説は一例)

cd /media/zlinuxuser/USB_HDD

のコマンドによりカレントディレクトリを USB の HDD のマウントポイントに移動。 コマンドラインの先頭が

/media/zlixxxxxx/USB_HDD $
のようになれば OK。以下(no.4)の手順 のコマンド指定によりここで移動したカ レントディレクトリにファイルが出力され る

dd コマンドの発行(of の指定を間違え無いこと。データの破壊に繋がる

dd if=/dev/sdx of=./windows7_backup.img ibs=10M obs=10M

(sdx=lsblk で調べたコピー元デバイス名( 末尾の数字無で指定=デバイス ))
(./windows7_backup.img=コピー先ファイル名 任意 ) (ドットはカレントディレクトリ)
(ibs,obs は一度に読み込むデータの量。この場合 10MByte)

上のコマンドをよく確認しオーケーなら発行する(Enter)
だが管理者権限が必要と大抵の場合、言われるので、
ここで初めて先頭に sudo をつける( 一度入力したコマンドは↑キーで出る )
管理者権限が必要と言われない場合もあるので確認はしっかりして下さい

sudo dd if=/dev/sdx of=./windows7_backup.img ibs=10M obs=10M

長らく待つとディスクのイメージファイル作成が終わる

別窓コンソールにて ps aux にて dd のプロセス ID を確認し
kill -USR1 プロセス ID 番号を入力すると進行状況が表示される
図の例では dd のプロセス番号は 5058

 

1.OSのリストアの手順(この作業はコマンド指定を間違えるとデータが破壊される)

dd if=./windows7_backup.img of=/dev/sdx ibs=10M obs=10M

イメージファイルをデバイスファイルに上書きする(of の指定が最重要)
/dev/sdx が lsblk で調べたデバイスファイル
( 間違えにくいように余計なデバイスは外しておくとよい)
/dev/sdx1 などがあるが
これはパーティションなので/dev/sdx(数字なし=デバイスファイル)とする

上書きされたデバイスは
中身が消える(イメージファイルの中身に置き換えられる)ので
要注意

なおlinuxコマンドddでのバックアップは、UbuntuライブDVDやknoppixなどのライブ起動DVDから起動してやるとOSにアクセスのないエラーの起きにくい環境で行えるのでよいと思います。

OSのまるまるバックアップは便利なのでぜひデータの消失にお気をつけながら便利にご利用ください。

GPTパーティションのバックアップ

GPTのパーティションをバックアップする場合でも、GPTヘッダに第二GPTヘッダのアドレスが含まれているために、最終セクタまでバックアップすれば書き戻した時に、ディスクサイズの異なるディスクでも問題なく動作するようです。(ただし、よりサイズの大きいものに限ります。)これは一応検証してみました

動作はするようですがgdiskを実行しwriteをかけるとエラーが検出されて問題を修正しますかと聞かれます。ここで問題を修正するを選ぶとディスクのエラーは解消されるようです。

Problem: The secondary header’s self-pointer indicates that it doesn’t reside at the end of the disk. If you’ve added a disk to a RAID array, use the ‘e’ option on the experts’ menu to adjust the secondary header’s and partition table’s locations.

問題:セカンダリヘッダーのセルフポインターが、それがディスクの最後にないことを示しています。 RAIDアレイにディスクを追加した場合は、エキスパートメニューの「e」オプションを使用して、セカンダリヘッダーとパーティションテーブルの場所を調整します。

エキスパートメニュー

上記によるとeで調整できるらしい。・・が単にWriteをかけるだけでもこのようなメッセージが表示される。

Found vaild GPT with protective MBR;using GPT
Warning! Secondary header is placed too early on the disk! Do you want to correct this problem?(警告。セカンダリヘッダがディスクの早すぎる領域に位置しています。この問題を正しますか?)

Final checks complete.About to write GPT data. This will overwrite existing partitions.(GPTデータを書き込むための最終チェック完了。これは存在するパーティションを上書きするでしょう。続けてよいですか)

英語おそらく正しいですが間違ってるかもしれません。得意な方はオリジナルを読んでください。ddによるOS書き戻しを行った後こちらから修正すれば、クローン化は完了し成功するでしょう。

進捗状況の確認はstatus=progressで

進捗状況はUSR1シグナルを送ることでも確認できるがもっと手軽な方法があるらしいそれは status=progress をコマンドラインにつけることです。これで進捗状況の確認ができます。

user-v@user-v-ln:~$ dd if=/dev/urandom of=./randomRRRR status=progress
457548288 bytes (458 MB, 436 MiB) copied, 5 s, 91.5 MB/s^C
1045271+0 レコード入力
1045271+0 レコード出力
535178752 bytes (535 MB, 510 MiB) copied, 5.84722 s, 91.5 MB/s

 

関連リンク

Raspberry PiのOSイメージをddで扱う際の注意点

Tips
基礎プログラミング 100本ノック 46~50 Javascript参考解答編

基礎プログラミング 100本ノック 46~50 Javascript参考解答編 基礎プログラミング 100本ノック 41~45 Javascript参考解答編 基礎プログラミング 100本ノック 35~40 Javascript参考解答編 基礎プログラミング 100本ノック 31~35 Javascript参考解答編 基礎プログラミング 100本ノック 26 …

Tips
Unityroomから動画を再生する

mp4などの動画をunity内で再生したい場合があると思います。実はWEBGLではVideoプレイヤーで内部に埋め込んだ動画は扱えません。 そのためsourceにURLを用いて外部からダウンロードする必要があります。 またunityroonから呼び出す場合はCORSも考慮しなくてはいけません。これはクロスオリジンのリソースを共有するための仕組みで 指定がない …

Tips
基礎プログラミング 100本ノック 35~40 Javascript参考解答編

基礎プログラミング 100本ノック 46~50 Javascript参考解答編 基礎プログラミング 100本ノック 41~45 Javascript参考解答編 基礎プログラミング 100本ノック 35~40 Javascript参考解答編 基礎プログラミング 100本ノック 31~35 Javascript参考解答編 基礎プログラミング 100本ノック 26 …