自宅サーバーがうるさくて娘が夜寝る時にかわいそうなので、さくらVPSにお引越しすることにしました。以下移行メモ。

{{‘

■OSインストール
とりあえずOSインストール

■Testingにする apt-get install emacs emacs /etc/apt/sources.list

   testingに書き換える

apt-get update; apt-get dist-upgrade;

■使用するpackageを導入する
apt-get install ssh -y

apt-get install wordpress -y
apt-get install postfix -y
apt-get install apache2 -y
apt-get install subversion -y
apt-get install mysql-server -y
apt-get install dokuwiki -y
apt-get install tdiary -y
apt-get install rsync
apt-get install libapache2-svn
apt-get install libapache2-mod-wsgi
apt-get install thin
apt-get install ruby-gems
apt-get install build-essential
apt-get install libxml2-dev
apt-get install libxslt-dev
apt-get install libmysqlclient-dev
apt-get install erubis
apt-get install python-setuptools
apt-get install python-django
apt-get install python-mysqldb
apt-get purge exim4

■rubygems
gem install sinatra
gem install haml
gem install sequel
gem install nokogiri
gem install mechanize
gem install mysql
gem install twitter
gem install oauth
gem install json

■python
easy_install South django django-debug-toolbar markdown html5lib python-openid

■移行元サーバーのサービスを止める
/etc/init.d/apache2 stop
/etc/init.d/mysql stop

■rsyncで同期する(移行元で実行)
rsync -avz -e ssh --delete /etc/ssh/ 49.212.123.45:/etc/ssh/
rsync -avz -e ssh --delete /etc/wordpress/ 49.212.123.45:/etc/wordpress/
rsync -avz -e ssh --delete /etc/postfix/ 49.212.123.45:/etc/postfix/
rsync -avz -e ssh --delete /etc/apache2/ 49.212.123.45:/etc/apache2/
rsync -avz -e ssh --delete /etc/subversion/ 49.212.123.45:/etc/subversion/
rsync -avz -e ssh --delete /etc/mysql/ 49.212.123.45:/etc/mysql/
rsync -avz -e ssh --delete /etc/my.cnf 49.212.123.45:/etc/my.cnf
rsync -avz -e ssh --delete /etc/dokuwiki/ 49.212.123.45:/etc/dokuwiki/
rsync -avz -e ssh --delete /etc/iptables/ 49.212.123.45:/etc/iptables/
rsync -avz -e ssh --delete /etc/php5/ 49.212.123.45:/etc/php5/

rsync -avz -e ssh --delete /usr/share/wordpress/ 49.212.123.45:/usr/share/wordpress/
rsync -avz -e ssh --delete /usr/share/tdiary/ 49.212.123.45:/usr/share/tdiary/
rsync -avz -e ssh --delete /usr/share/dokuwiki/ 49.212.123.45:/usr/share/dokuwiki/

rsync -avz -e ssh --delete /var/www/ 49.212.123.45:/var/www/
rsync -avz -e ssh --delete /var/svn/ 49.212.123.45:/var/svn/

rsync -avz -e ssh --delete /var/lib/mysql/ 49.212.123.45:/var/lib/mysql/
rsync -avz -e ssh --delete /var/lib/dokuwiki/ 49.212.123.45:/var/lib/dokuwiki/

rsync -avz -e ssh --delete /home/ebi/ 49.212.123.45:/home/ebi/
rsync -avz -e ssh /etc/cron.d/hateburanking 49.212.123.45:/etc/cron.d/hateburanking
rsync -avz -e ssh /etc/cron.d/rss_twit 49.212.123.45:/etc/cron.d/rss_twit
rsync -avz -e ssh /etc/cron.d/twitter2diary 49.212.123.45:/etc/cron.d/twitter2diary
rsync -avz -e ssh /etc/init.d/hateburanking 49.212.123.45:/etc/init.d/hateburanking
rsync -avz -e ssh /etc/init.d/hatebunow 49.212.123.45:/etc/init.d/hatebunow

■起動設定(移行先マシンにて)
update-rc.d hateburanking defaults 20
update-rc.d hatebunow defaults 20

■IPアドレス変更に伴う書き換え
emacs /etc/mysql/my.cnf
emacs /etc/apache2/sites-enabled/*

‘}}

専業主夫生活を楽しんでいたら、自宅サーバーのHDDが壊れました。嫁さんが先に気がついて、ちょっと診てみたらなんだか挙動が怪しかったのでとりあえず再起動(←悪い癖だ。)をしたところ、GRUBからLinuxが立ち上がらなくなってしまいました。HDDが正常に読み込めない感じです。

で、その後色々右往左往したのですが、結果的には以下の手順で復旧しました。

  • 故障したHDDを別のLinux機に接続
  • SMARTでそろそろ故障するという状態になっていることを確認
  • gddrescueをインストール。新規購入したHDDにデータをコピー
  • 何日間も時間がかかる(途中無駄に中断したりやり直したりゴニョゴニョしたけど全く無意味だった)
  • 完了後、fsckで修復
  • HDDを付け直し、起動に成功

まとめてしまうとこれだけか・・・。当初ddを使っていて、あまりの処理の遅さに(1MByte/sec程度)待ちきれず処理単位を調整しだしたのが良くなかったです。なぜか処理のはじめの方は40MByte/sec程度まで改善したのですが、中盤以降になるとデータ転送速度が極端に落ち、100kByte/sec程度に落ちてしまう・・・・ということを何度も繰り返しました。そういうものなのか、私のオペレーションの問題なのかは未だに不明…。その後ddrescueの存在をしり、それで実行することで速度は微妙に改善しましたが、やはり処理速度が100kByte/sec程度に落ちてしまう箇所があり、単純計算するとコピーだけで10日以上かかるような計算になり、途方にくれてました。

でも、結局色々やっていたらHDDが持ち直したようで、転送速度が上がり最終的には丸2日程度の時間をかけて250GBのコピーが完了しました。結局エラーは3つだけだったので、ほぼすべてのデータが救えました。

それにしても、やっぱりバックアップはきちんとやっておかないとダメですね。自作のスクリプトでgmailに添付ファイルとして送りつける仕組みを作ったので安心していたのですが、それがきちんと動いてなかったり、メールに抜け落ちがあったりしてダメダメでした。ケチらずにHDDを購入してミラーしておくことにしようと思います…。

以前はバックアップはローカルのUSB接続のUSBHDDにrsyncで行っていたのですが、この間サーバー移行の時に確認してみたらきちんと動作していなかった(おそらくHDDがおかしくなった)ので、バックアップをもうちょっとなんとかしようと思って考えて、結局gmailにメールでガンガン送りつけることにしました。メール爆弾のように・・・・。

あまりサイズが多すぎると、プロバイダやらメールサーバーやらに弾かれてしまうのでtar.gzで固めた上で5MBつづに分割して送信することにしました。

以下のような感じです。

<<< #!/bin/sh

local target_address=xxxx@gmail.com
local sqladmin_password=xxxx

make_bz2 () {

   tar -C $1 -jcvf $2 $3

make_bz2_sql () {

   mysqldump --password=$sqladmin_password $1 | bzip2 -cv > $2

send_mail () {

   uuencode $1 $1 | mail -s $1 $target_address

make_bz2 ‘/’ ‘/backup/work/etc.tar.bz2’ ‘etc’
make_bz2_sql ‘mysql’ ‘/backup/work/mysql.sql.bz2’

cd /backup/work

#10MB以上のファイルを分割
find /backup/work -size +10240k -exec split -b 5m {} {}. \;

#10MB以上のファイルは先にoldへ移動
find /backup/work -size +10240k -exec mv {} /backup/old/ \;

#すべてメールで送信
files=”/backup/work/*”
for filepath in ${files}
do

   send_mail ${filepath}

done

#掃除
mv /backup/work/* /backup/old/
>>>

gmailなら事実上容量無制限っぽく使えてしまうので、これはかなり良い手なのではないかと個人的に考えてます。でも、こんなスクリプトにパスワードを生で書いていいのかどうか不安です。けど、まぁ、良いことにしました。

ということで、探してみたらFiremacsという拡張があった。これでちょっと幸せになれそう。

linuxを使っていると色々なアプリケーションでemacsのキーバインドが使えなくてイライラする。WindowsならXkeymacsのおかげですべてにおいてemacsキーバインドがつかえるのに!

と、自分の変態さ加減をOSを変えようとしてみて改めて認識。これはもう直せないかもしれない…。

ふと思い立ってVMWare Player上でUbuntuを動かして、そっちをメインのクライアント環境
にしてみることにしました。なぜかと言うと・・・Windowsにさすがに飽きたからかも。
メモリがちょっと足りないので、Amazonで2GB分注文。メモリもずいぶんやすくなったな・・・。

今日の日記もUbuntuから書いてます。Firefoxから書いているから、まぁ、
WindowsでもUbuntuでもほとんど同じなんだけども。

環境変数の設定

emacs .cshrc

..cshrcに以下の環境変数を設定(SSHで接続する場合)

#CVS用設定
setenv CVS_RSH "ssh"
setenv CVSROOT ":ext:@:"
setenv CVSEDITOR "emacs -nw"

プロジェクトのチェックアウト(プロジェクトのCVSからの取得)

cvs checkout (プロジェクト名)

もしくは

cvs checkout -d (作業用ディレクトリ) (プロジェクト名)

プロジェクトへのファイル、ディレクトリの追加

テキストファイルの追加

cvs add newfile
cvs commit newfile

ディレクトリの追加

cvs add directory

バイナリファイルの追加

cvs add -kb binary_file

テキストファイル内のキーワードの置換

以下のキーワードをテキストファイル内に記述しておくと置換してくれます。

$Log:$ --- ファイル名、リビジョン、日付、作者、コメントなど複数行
$Revision:$ --- リビジョン
$Date:$ --- 最終コミット日付
$Id:$ --- ファイル名、リビジョン、日付、作者

プロジェクトのコミット

全体のコミット

cvs commit

単体のファイルのコミット

cvs commit (ファイル名)

作業の終了

cvs release
rm -R ディレクトリ

と、ここまで学んだのですが、WindowsとLinuxとでやりとりすると文字コードの違いから問題が…。LinuxにCVSサーバーを立てている現状では、文字コードはEUCで統一すべきかな…。

1件のコメント

プロダクトキー検索ツールが存在することを知る。仕事で使えそう!ということで、メモメモ。