Edited at

ディスクのクローンを作成

More than 1 year has passed since last update.


Linux


読み込み

TODO


書き込み

TODO


Mac


読み込み

まずは,読み出し対象のディスク (/dev/rdiskX) を見つけます.

diskutil list

/dev/rdiskX からデータを読み出し,bk.img という名前のディスクイメージを作成します.

sudo dd if=/dev/rdiskX of=bk.img bs=1m


書き込み

まずは,書き込み対象のディスク (/dev/rdiskX) を見つけます.

diskutil list

/dev/rdiskX のすべてのパーティションをアンマウントします.

diskutil unmountDisk /dev/diskX

bk.img というディスクイメージをもとに /dev/rdiskX に書き込みを行います.

sudo dd if=bk.img of=/dev/rdiskX bs=1m


備考


dd コマンドのオプション

それぞれのオプションは次の意味を持ちます.

bs     -- block size

cbs -- conversion buffer size
conv -- specify conversions to apply
count -- number of input blocks to copy
files -- specify number of input files to copy and concatenate
ibs -- input block size
if -- specify input file
obs -- output block size
of -- specify output file
seek -- output blocks initially skipped
skip -- input blocks initially skipped


disk と rdisk

BSD (Mac) では,同一デバイスに /dev/diskX/dev/rdiskX の 2 つの名前でアクセスできます.

disk も rdisk も同じデバイスを参照しますが,ランダムアクセス可能かどうか,という点で異なります.disk はランダムアクセスが可能です.それに対して,rdisk はデバイスにシーケンシャルアクセスします.

ランダムアクセスは,インデックスを指定することで参照したいブロックに直接アクセスすることができます.それに対して,シーケンシャルアクセスは,先頭から順にブロックをたどって参照したいブロックにアクセスします.

ランダムアクセスは配列のようなもの,シーケンシャルアクセスはリストのようなもの,というイメージを持っておくといいでしょう.

disk はランダムアクセスを可能にするために 4 KB のバッファを介してデバイスにアクセスします.それに対して,rdisk はバッファを介さずにデバイスにアクセスすることができます.そのため,dd コマンドのようなランダムアクセスの発生しない読み書きの場合は,rdisk でデバイスを参照すると高速に読み書きできます.


参考