ファイルシステムをディスク間でコピーするには、次の 2 つのコマンドを使用します。
volcopy
dd
次の節では、dd コマンドを使用してファイルシステムをディスク間でコピーする方法について説明します。
dd コマンドでは、UFS ファイルシステムのリテラル (ブロックレベル) コピーを別のファイルシステムやテープに作成します。デフォルトでは、dd コマンドはその標準入力を標準出力にコピーします。
可変長テープドライブで dd コマンドを使用するときは、必ず適切なブロックサイズを指定してください。
標準入力、標準出力、またはその両方の代わりに、デバイス名を指定できます。次の例では、フロッピーディスクの内容が /tmp ディレクトリ内のファイルにコピーされます。
$ dd < /floppy/floppy0> /tmp/output.file 2400+0 records in 2400+0 records out |
dd コマンドは、読み取りブロック数と書き込みブロック数をレポートします。+ の次の数値は、部分的にコピーされたブロックの数です。デフォルトのブロックサイズは 512 バイトです。
dd コマンドの構文は、他のほとんどのコマンドとは異なっています。オプションは keyword=value のペアで指定します。この場合、keyword は設定するオプションで、value はそのオプションの引数です。たとえば、標準入力と標準出力を次の構文に置き換えることができます。
$ dd if=input-file of=output-file |
上記の例のリダイレクト記号の代わりに keyword=value の形式で指定するには、次のように入力します。
$ dd if=/floppy/floppy0 of=/tmp/output.file |
コピー元とコピー先のディスクが、同じディスクジオメトリを保持していることを確認します。
スーパーユーザーになるか、同等の役割を引き受けます。
/reconfigure ファイルを作成し、リブート時にシステムが追加するクローンディスクを認識するようにします。
# touch /reconfigure |
システムをシャットダウンします。
# init 0 |
クローンディスクをシステムに接続します。
システムをブートします。
ok boot |
# dd if=/dev/rdsk/device-name of=/dev/rdsk/device-name bs=block-size |
if=/dev/rdsk/device-name |
マスターディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 |
of=/dev/rdsk/device-name |
クローンディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 |
bs= blocksize |
ブロックサイズ (128K バイト、256K バイトなど) を指定できる。ブロックサイズの値を大きくすると、コピーに要する時間を短縮できる。 |
詳細については、dd(1M) のマニュアルページを参照してください。
新しいファイルシステムをチェックします。
# fsck /dev/rdsk/device-name |
クローンディスクのルート (/) ファイルシステムをマウントします。
# mount /dev/dsk/device-name /mnt |
クローンディスクの /etc/vfstab を編集して、正しいデバイス名を参照するようにします。
たとえば、c0t3d0 のインスタンスをすべて c0t1d0 に変更します。
クローンディスクのルート (/) ファイルシステムをマウント解除します。
# umount /mnt |
システムをシャットダウンします。
# init 0 |
クローンディスクからシングルユーザーモードでブートします。
# boot diskn -s |
installboot コマンドをクローンディスクで実行する必要ありません。これは、ブートブロックがオーバーラップスライスの一部としてコピーされるためです。
クローンディスクの構成を解除します。
# sys-unconfig |
構成を解除すると、システムが停止します。
再びクローンディスクからブートし、ホスト名や時間帯などのシステム情報を与えます。
# boot diskn |
スーパーユーザーとしてログインして、一度システムがブートした後のシステム情報を確認します。
hostname console login: |
次の例では、マスターディスク /dev/rdsk/c0t0d0s2 をクローンディスク /dev/rdsk/c0t2d0s2 にコピーする方法を示します。
# touch /reconfigure # init 0 ok boot # dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t2d0s2 bs=128k # fsck /dev/rdsk/c0t2d0s2 # mount /dev/dsk/c0t2d0s2 /mnt # cd /mnt/etc # vi vfstab (新しいディスクのエントリを変更) # cd / # umount /mnt # init 0 # boot disk2 -s # sys-unconfig # boot disk2 |