Ubuntu
isucon

ubuntuサーバを最速でコピーする (ISUCON向け)

ISUCONでは、サーバ壊すとそれで試合終了になるので、ぶっ壊しても困らない環境を最速でコピーします。
この記事を書いている時は、IDCF Cloudの ubuntu 16.04 を利用しています。

ISUCON Imageサーバで作業

# 面倒くさいのでrootにスイッチ
sudo su -

# /backup に全て放り込むため
mkdir /backup
cd /backup

# apt-get でインストールされたパッケージ履歴から apt-get コマンドを生成
cat /var/log/apt/history.log | grep 'Commandline' |  awk -F 'Commandline: ' '{print $2}' > /backup/01-apt-get.sh

# /etc 配下をtarで固めてもっていきます
tar zcf etc.tgz /etc

# /home/isucon 配下をtarで固めて持っていきます
tar zcf home-isucon.tgz /home/isucon

# mysqlの全データをdump
mysqldump -u root-p -A | gzip > ./mysqldump.sql.tgz

# 動いているProcess一覧 (確認用)
ps aux > ps-aux.txt

# 起動中のサービス一覧 (確認用)
systemctl list-unit-files -t service > systemctl-list-unit-files.txt

コピー先のサーバでやること

sudo su -
scp -r isucon@`ISUCON ImageサーバのIP:/backup /
cd /backup

tar zxf home-isucon.tgz
mv home/isucon /home/

tar zxf etc.tgz
rm -rf /etc
mv etc /

apt-get update
bash ./01-apt-get.sh

systemctl daemon-reload

zcat mysqldump.sql.tgz | mysql -u root -p
mysqladmin -u root -p flush-privileges

かなり乱暴なやり方ですが、上記をスクリプト化して実行すると、サクッと環境のコピーができます。