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 でデバイスを参照すると高速に読み書きできます.