元の HD から新しい HD へのファイルのコピー

Hard Disk Upgrade Mini How-To
Prev |  | Next

# 7. 元の HD から新しい HD へのファイルのコピー

ハードディスクをコピーする時はシングルユーザーモードで行います。これはシステムデーモンをシャットダウンし ログの状態を保ち他のユーザーのログインを防ぐためです -

    /sbin/telinit 1

ディレクトリとファイルそれにリンクのすべてをコピーします。

しかし `/new-disk` をコピー する必要はありません。自分自身をコピーすることになるからです。

さらに新しい HD に `/proc` ディレクトリを作りますが内容をコピーする必要はありません - これは 1 種の バーチャル ファイルシステムで実際にはファイルはありませんが稼動中のシステムのプロセス情報 を反映しています。

元の HD を新しい HD にコピーする方法は 3 つあります。ハードディスクが大きかったり メモリが小さかったりすればかなり時間がかかります。コピー速度は 1 分間 10 Mb かもう少し多い ぐらいでしょう。

コピーの進行状況はほかのターミナルから df コマンドを使って分かります。 watch df か watch ls -l /new-disk を使うと 2 秒毎に更新された状態を見ることができます - 表示を中止させたいときは Ctrl-C を押します。 watch コマンドを使うとコピーの速度が遅くなります。

cp -ax / /new-disk

  これが 1 番簡単な方法ですが元の Linux システムのパーティションが 1 つの時だけ有効です。

  なるべく元のファイル構成と属性を保つため `-a` オプションを使います。 `-x` は単一のファイルシステムをコピーするために使います - これは `/new-disk` と `/proc` を コピーさせない ために要ります。

  SuSE の場合. この方法に限り新しい HD に `/dev/pts` を 次のコマンドを使って作っておく必要があります。 mkdir /new-disk/dev/pts

  > Note: cp コマンドの最近のバージョンでは `-x` オプションを付けると `/new-disk/new-disk` と `/new-disk/proc` ができます。ディレクトリの中身はありません。この 2 つができた時は `/new-disk/new-disk` を 消去して `/new-disk/proc` を残しておきます。

cd / && echo cp -a `/bin/ls -1Ab | egrep -v "^new-disk$|^proc$"` /new-disk | sh

  ( 1 行で記述してください)

  このコマンドはまずルートディレクトリに入り次に `/new-disk` と `/proc` を除く すべてのファイルとディレクトリを `/new-disk` にコピーします。 ls の後ろの最初のオプションは アルファベットの L ではなく数字の 1 です。

  このコマンドはどんなときでもたぶん有効です。

cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin /tmp /usr /var /new-disk

  ( 1 行で記述してください)

  1 番後ろのディレクトリ `/new-disk` は cp コマンドのコピー先でその他のディレクトリはコピー元です。 つまり列挙したすべてのディレクトリを `/new-disk` にコピーすることになります。

  この方法ではコピーする必要のあるディレクトリを自分で単にリストアップするだけです。 ここでは `/new-disk` と `/proc` を除いて すべてのディレクトリをリストアップしています。なんらかの理由でほかの方法が使えないときは このコマンドを使ってマニュアルでコピーしたいディレクトリを指定します

  この方法の場合ルートディレクトリ自身になにかファイルがあるときは次のコマンドを使って コピーします。特に Debian と Slackware ではルートディレクトリにファイルを 置くのでその必要があります -

      cp -dp /* /.* /new-disk

この Mini How-To の以前のバージョンではハードディスクをコピーするのに tar コマンドも使えると書きましたがこの方法にはバグがあります。その他にも当然いろいろな方法がありますが この 3 つが最も簡単で速くて確かです。

3 つの方法のどれかでコピーした後もし新しい HD に `/proc` ディレクトリが無ければ作成します -

    mkdir /new-disk/proc

ここで必要なら新しい HD のファイル構造を検定します -

    umount /new-disk
    fsck.ext2 -f /dev/hdb1
    mount -t ext2 /dev/hdb1 /new-disk

もし新しい HD に 1 つ以上のパーティションがあるなら fsck.ext2 を走らせる前に下の階層からアンマウントします - 前に述べた例ではまず 3 層目のパーティションをアンマウントしてつぎに 2 層目 1 層目と続きます。

ファイルが間違いなくコピーされたかどうかを確かめるため2つのハードディスクを照合して おくこともできます -

    find / -path /proc -prune -o -path /new-disk -prune -o -xtype f -exec cmp {} /new-disk{} \;

( 1 行で記述してください)

Slackware の場合. 最小限のファイルだけを含む Slackware の基本インストール("A" シリーズだけ)では cmp は含まれて来ないのでこのコマンドは実行できません。 これは "AP1" シリーズには入ってきます。

このコマンドは普通のファイルだけを照合します。 `/dev` ディレクトリにある特殊な キャラクタ デバイス ファイルやブロック デバイス ファイル、ソケットなどは cmp コマンドでは適切なチェックはできません。このような"特別"なファイルの検定方法についてなにかあれば教えてください。

Prev | Home | Next
新しい HD のマウント |  | `/new-disk/etc/fstab` の修正