linuxのターミナルで使うことができるddコマンドについて、ddコマンドとはディスクのクローンを作るときに使われるコマンドで、あるディスクとそっくりそのままの内容を別のディスクへ複製することができる。ただし条件があり、
・元となるディスクと同じ容量か大きいディスクのみクローン作成可能
・元となるディスクより容量が小さいディスクへはクローンできない
といった条件がある。
またddコマンドができることは
・ディスクのクローン作成
・パーティションのコピー
といったことができる。
で、大きい容量から小さい容量のディスクへコピーする場合について。たとえばubuntuのOSが入っているディスクのクローンを作成する場合、パーティションが切られているのが普通であり、ブートローダがあるバーティション、本体のファイルシステムがあるパーティションといった具合に存在する。容量の大きいディスクから小さいディスクへのクローン作成は本体のファイルシステムのあるパーティションをddコマンドでコピーすることで目的を達成することにした。
Ubuntuでクローンを作成する場合
手順としては、
- 元となるディスクの最も大きいパーティションのサイズをgpartedを使って小さいディスクの容量に収まるようにリサイズする。
- 移行先となる容量の小さいディスクに元となるディスクに存在するOSと同じものをクリーンインストールする。
- ubunbtuのインストールメディアをusbかなんかに保存してliveインストールディスクとして使えるようにする。(遊んでるlinuxマシンがある人はそちらで可)
- 3で作ったインストールディスクでliveOSを起動する(この起動するマシンに移行元と移行先のディスクをあらかじめ接続しておく)
- liveOSでデスクトップが起動したらターミナルを起動してddコマンドを実行してパーティションをコピーする
例:# dd if=/dev/sda2 of=/dev/sdb2 bs=4M
以上のような手順でとりあえずディスクのクローンという目的は達成することができた。容量大から容量小へのddコマンドディスク複製の実行はたとえパーティションサイズが同じであってもディスク全体の容量が違うということでコマンドを完遂することができない。当たり前といえば当たり前だけれども。パーティションサイズを整えて使用済みの容量と移行先の容量は揃えたからあとはddコマンドさんよろしく・・・というようなことはできない模様。ifには元となるディスクまたはパーティションを指定、ofには移行先となるディスクまたはパーティションを指定。
ディスクをクローンする場合
例:# dd if=/dev/sda of=/dev/sdb bs=4M
パーティションをクローンする場合
例:# dd if=/dev/sda2 of=/dev/sdb2 bs=4M
詳しくは # fdisk -l とかしてディスク状況を確認するといいかもしれない。bsのサイズは適当。
特定のパーテーションだけコピーする場合、OSならブートローダー部分はどうするんですか? これならファイルコピーと同じじゃないですか?