今日はサーバー移行について学んでみましたが、その中で幾つか他のやり方でもできる方法を見つけましたので、投稿します。ここではtarというコマンドでサーバーを移行する手順が紹介されていました。基本的に既存サーバーのデータをバックアップすることは同じです。
旧サーバーのファイルをバックアップ
旧サーバーでのファイルのバックアップは、普通に tar コマンドで Tarball 化するだけでよいと思います。ルートディレクトリで以下のように実行しました。もちろん、以降の作業は全て root ユーザーで行ってください。
tar -jcf backup.tar.bz2 etc home www ユーザー名
新サーバーでの準備
ファイルの所有ユーザーや所有グループを復元するためには、移行先のサーバーで同じユーザー・グループが存在する必要があります。ですので、あらかじめバックアップしたファイルを復元するために必要なユーザー・グループを作成しておきましょう。これらは名前が一致していればよく、必ずしも ID が同じである必要はありません。
まず最初に必要なグループを作ってしまいましょう。ご存知かと思いますが、グループを作成するには以下のように groupadd コマンドを使用します。
groupadd <グループ名>
次に、必要なユーザーを作成します。useradd コマンドを使用します。
useradd -g <グループ名> <ユーザー名>
必要に応じて -d(ホームディレクトリのパス指定), -s(デフォルトシェルの指定) オプションなどを指定してください。バックアップデータにホームディレクトリが含まれるなら、-m オプションは付けないほうがよいでしょう。なお、この時点では -G オプションによる補助グループの指定はなくてもかまいません。後から gpasswd コマンドで追加してください。
Tarball を展開する
旧サーバーでバックアップした Tarball を何らかの手段で新サーバー上にコピーし、それを展開します。念のため作業用のディレクトリを作成し、そこに展開したほうがよいでしょう。
mkdir /backup cd /backup tar --same-owner -xjpf <Tarballのファイル名>
不正なユーザー・グループがないか確認する
同名のユーザーやグループが存在すれば、tar コマンドが自動的にマッピングしてくれます。しかし、対応するものが存在しない場合、旧サーバーの ID がそのまま使用されてしまいます。以下のように find コマンドを使用すると、存在しないユーザー・グループに所有されているファイルをリストアップできます。
find /backup -nouser -o -nogroup
そのようなファイルが見つかった場合は、まず対応するユーザー・グループを作成し、同じく find コマンドを使って所有者を変更しましょう。例えばユーザー ID 500 に所有されているファイルをユーザー “foo” 所有に変えるには、以下のようにします。
find /backup -uid 500 -exec chown foo \{\} \;
グループ ID 500 をグループ “bar” に変えるのはこれです。
find /backup -gid 500 -exec chgrp bar \{\} \;
ただし、この方法でもたまたま旧サーバーでのユーザー・グループ ID と同じ ID で別のユーザー・グループが存在する場合は検出できません。できるだけ最初に必要なユーザー・グループを作成しておくようにしましょう。
本来の場所にファイルをコピー
適切なユーザー・グループが設定されていることを確認したら、ファイルを本来の場所にコピーしましょう。それには、-a オプションを付けて cp コマンドを使用すれば OK です。
cp -a <コピー元ファイル名> <コピー先ファイル名>
-a オプションを付け忘れるとすべて root ユーザーの所有になってしまうので、注意してください。
これ以外にも色々なやり方がありましたので、参考にしていただければと思います、