サーバ移転作業時の注意点

日付 2005.07.26
タイトル サーバ移転作業時の注意点
本文
[user, group] ================================================
ユーザを保つ必要があるならば先にuser, groupを引っ越し先に作成しておくこと。
ユーザデータの編集には必ずvipw, vigrを使用する。編集前に
/etc/{passwd,shadow,group,gshadow}はバックアップを取っておいたほうが良い。
このファイルを壊すと新規サーバにログイン出来なくなる。


[データ転送] =================================================
基本的にはrsync。
ファイルのパーミッション(user,groupも含めて)を出来うる限り完全に保ったまま転送したいならばrsyncよりtarコマンドが良い場合がある。
必要が無ければFTP。

全転送容量が大きく、当日だけではどうにもなら無さそうならば、最初にその時点の全てのファイルをあらかじめ移転先に転送しておき、作業当日には、転送した日より後に変更されたファイルのみ再度転送を検討。

(例)
# /home内の変更されて1日以内(-ctime -1)のファイル(-type f)を.listへ。
find /home -type f -ctime -1 > .list

# .listにかかれているファイルからxxxx.tar.gzを作成する。
tar -zcvf xxxx.tar.gz --files-from .list


ディスク容量などの制限、あるいはファイルシステムの破損などでファイルをローカルに作成できない場合。
以下のようにするとローカルにファイルを作成することなく転送することが出来る。

ftp xxx.yyy.zz
ftp> binary
ftp> put "|tar -zcv /home" home.tar.gz

netcatが入っていればそれを使用してもいい。
連続してファイルを転送する必要がある場合は以下の例が役に立つかもしれない。

echo '
open xxx.yyy.zz
user id pw
prompt
binary
put /etc/apache/httpd.conf httpd.conf
put /etc/php.ini php.ini
put "|tar -zcv /var/log" var-log.tar.gz
put "|tar -zcv /home" home.tar.gz
bye' | ftp -n

ftp -n に食わせる内容を作成できればいいので、binary以降をfindとsedで組めば条件に一致するファイルのみ転送も可能。