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