さくらのレンタルサーバーを外部からバックアップする

さくらのレンタルサーバーを外部からバックアップする方法のメモ。
現在私はさくらのレンタルサーバーのスタンダードコースを利用していますが、このサーバーのデータを外部、具体的にはローカルにあるLinuxのサーバーにバックアップしたいなと考えてちょっとやってみました。方法はssh経由でtarしてローカルに落とす方向で。

ローカルのLinux
ローカルのLinuxはScientificの6.1を利用しています。sakura-backupというユーザーを存在させ、/home/hogehoge-backup/bak/hogehoge-20120308.tar.gz というように作成して行きます。

SSHの自動ログイン設定(鍵の作成)
※作業は全てバックアップ用のサーバーから行います

バックアップサーバー側で下記のコマンドを実行します。
この時必ずバックアップを実行するユーザーでログインしておいて下さい。

$ ssh-keygen

質問がいくつか出てきますが全て何も入力せずにEnterキーを押します。
するとホームディレクトリ ~/.ssh/以下にid_rsa、id_rsa.pubが作成されます。

id_rsa.pubをの内容をさくらの~/.ssh/authorized_keysに書き加えます。
この操作もバックアップ用サーバー側から行えます。

$ cat ~/.ssh/id_rsa.pub | ssh XXXX@yyy.sakura.ne.jp "echo - >> ~/.ssh/authorized_keys"

完了したら下記コマンドを実行してさくらにパスワード無しでログインできるか試してみてください。パスワードを聞いてこなければ成功です。

$ ssh XXXX@yyy.sakura.ne.jp

Last login: Thu Mar  8 05:46:09 2012 from XXX.XXX.XXX.XXX
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
	The Regents of the University of California.  All rights reserved.

FreeBSD 7.1-RELEASE-p16 (SAKURA11S) #12: Mon Oct  3 17:12:59 JST 2011

Welcome to FreeBSD!

%

ここまで来たら後はスクリプトを書いていくだけです。
私の場合はとりあえずこんな感じで。

 

#!/bin/bash

SSH_HOST="hoge.sakura.ne.jp"
SSH_USER="hoge"
BACKUP_PATH="~"
BACKUP_OUT_DIR="/var/www/hoge_backup/bak"
BACKUP_OUT_FILE="hoge-`date +"%Y%m%d"`.tar.gz"
BACKUP_MTIME="+30"
MYSQL_DBHOST="mysqlxxxx.db.sakura.ne.jp"
MYSQL_BAKDB="hoge_db1 hoge_db2 hoge_db3"
MYSQL_DBUSER="hoge"
MYSQL_DBPASS="hogehogepass"
MYSQL_BAKOUT_DIR="/var/www/hoge_backup/bak"

ssh $SSH_USER@$SSH_HOST tar cvzf - "$BACKUP_PATH" > "$BACKUP_OUT_DIR/$BACKUP_OUT_FILE"
find $BACKUP_OUT_DIR -mtime $BACKUP_MTIME -type f -exec rm -fr {} \;

for dbname in $MYSQL_BAKDB
do
ssh $SSH_USER@$SSH_HOST mysqldump --default-character-set=binary -h $MYSQL_DBHOST -u $MYSQL_DBUSER -p$MYSQL_DBPASS $dbname | gzip > "$MYSQL_BAKOUT_DIR/$dbname-`date +"%Y%m%d"`.sql.gz"
done

MySQLのデータベースについては複数指定に対応してあります。これをバックアップするサーバー側のcronに設定すれば完了です。cronで指定した分だけバックアップスクリプトが走ります。

コメントを残す