ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Solaris のシステム管理 (デバイスとファイルシステム) Oracle Solaris 10 8/11 Information Library (日本語) |
14. Oracle Solaris iSCSI ターゲットおよびイニシエータの構成 (手順)
22. UFS ファイルシステムのバックアップと復元 (概要)
23. UFS ファイルとファイルシステムのバックアップ (手順)
26. UFS バックアップおよび復元コマンド (参照情報)
cpio を使用してファイルシステム間でディレクトリをコピーする
ファイルシステム間でディレクトリをコピーする方法 (cpio)
ディレクトリ内のすべてのファイルをテープにコピーする方法 (cpio)
ファイルをリモートテープデバイスにコピーする方法 (tar と dd)
ファイルを 1 枚のフォーマット済みフロッピーディスクにコピーする方法 (tar)
ファイルシステムをディスク間でコピーするには、次の 2 つのコマンドを使用します。
volcopy
dd
volcopy の詳細は、volcopy(1M) のマニュアルページを参照してください。
次の節では、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
ディスクをコピーする際には次の点に注意してください。
ボリュームマネージャーの制御下にあるディスクをコピーする場合は、この手順を使わないでください。
UFS ファイルシステムのデータをあるディスクまたはシステムから別のディスクまたはシステムへコピーする場合にもっとも多く使用されるのは、ufsdump コマンドおよび ufsrestore コマンドを使用する方法です。これらのコマンドの使用方法の詳細は、Chapter 22, UFS ファイルシステムのバックアップと復元 (概要)を参照してください。
システムを複製するには、フラッシュアーカイブを作成し、それを複製先のシステムにコピーします。フラッシュアーカイブの作成方法の詳細は、『Oracle Solaris 10 9/10 インストールガイド (Solaris フラッシュアーカイブの作成とインストール)』を参照してください。
EFI ディスクラベル付きディスクをコピーする場合は、例 27-2 を参照してください。
それでもなお、dd コマンドによるディスクコピーを検討する場合は、次の点に注意してください。
コピー元とコピー先のディスクが、同じディスクジオメトリを保持していることを確認します。
コピー対象の UFS ファイルシステムを fsck ユーティリティーを使って検査します。
dd コマンドを使ってディスクをコピーする際に、システムがシングルユーザーモードになっていることを確認します。
# touch /reconfigure
# init 0
ok boot -s
# dd if=/dev/rdsk/device-name of=/dev/rdsk/device-name bs=block-size
マスターディスクデバイスのオーバーラップスライスを指定します。通常はスライス 2 です。
コピー先ディスクデバイスのオーバーラップスライスを指定します。通常はスライス 2 です。
ブロックサイズ (128K バイト、256K バイトなど) を指定できます。ブロックサイズの値を大きくすると、ディスクのコピーに要する時間を短縮できます。
詳細は、dd(1M) のマニュアルページを参照してください。
# fsck /dev/rdsk/device-name
# mount /dev/dsk/device-name /mnt
# cd /mnt/etc
たとえば、c0t3d0 のインスタンスをすべて c0t1d0 に変更します。
# cd /
# umount /mnt
# init 0
# boot diskn -s
注 - installboot コマンドをコピー先ディスクで実行する必要はありません。これは、ブートブロックがオーバーラップスライスの一部としてコピーされるためです。
# sys-unconfig
構成を解除すると、システムが停止します。
# boot diskn
hostname console login:
例 27-1 VTOC ラベル付きディスクをコピーする (dd)
次の例では、VTOC ラベル付きのマスターディスク /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 (Modify entries for the new disk) # cd / # umount /mnt # init 0 # boot disk2 -s # sys-unconfig # boot disk2
例 27-2 EFI ラベル付きディスクをコピーする (dd)
以前の Solaris リリースでは、ディスク全体がスライス 2 (s2) で表されていました。EFI ラベル付きディスクの場合、複製後のディスクに一意の UUID を割り当てる必要があるため、1T バイトを超えるサイズのディスクを複製 (コピー) する場合、若干異なる方法を使用する必要があります。複製済みディスク用の新しいラベルは、必ず作成してください。作成しないと、その他のソフトウェア製品によって UUID の重複が検出された時点で、EFI ラベル付きディスクのデータが破壊されることがあります。
次に例を示します。
EFI ラベル付きディスクを複製します。次に例を示します。
# dd if=/dev/rdsk/c0t0d0 of=/dev/rdsk/c0t2d0 bs=128k
複製対象のディスクの prtvtoc 出力を fmthard コマンドにパイプして、複製済みディスク用の新しいラベルを作成します。次に例を示します。
# prtvtoc /dev/rdsk/c0t0d0 | fmthard -s - /dev/rdsk/c0t2d0
EFI ディスクラベルの詳細は、「EFI ディスクラベル」を参照してください。