GMailを使ってサーバのバックアップを取る

サーバのバックアップ置き場としてGMailを使うと、サーバやローカルPCがクラッシュしたときに便利なので、これをシェルスクリプトにする。

#バックアップシェル
#コンテンツ等のあるhome、設定ファイルのetc、及びMySQLのデータをバックアップする
MAILTO=アドレス@gmail.com
TODAY=date '+%Y%m%d'
/bin/tar czf /tmp/$TODAY.home.tgz /home
/bin/tar czf /tmp/$TODAY.etc.tgz /etc
/usr/bin/mysqldump -h localhost -uroot -pパスワード –skip-lock-table –all-databases|/usr/bin/gzip>/tmp/$TODAY.mysqldump.gz
cat /tmp/$TODAY.etc.tgz|/usr/bin/uuencode $TODAY.etc.tgz.uue|/bin/mail -s $TODAY-backup-etc $MAILTO
/bin/rm -f /tmp/$TODAY.etc.tgz
/usr/bin/split -b15m /tmp/$TODAY.mysqldump.gz /tmp/split/
/bin/rm -f /tmp/$TODAY.mysqldump.gz
/bin/ls -1 /tmp/split/|while read filename; do
cat /tmp/split/$filename|/usr/bin/uuencode mysqldump-$filename.uue|/bin/mail -s $TODAY-backup-mysqldump-$filename $MAILTO
/bin/sleep 30
/bin/rm -f /tmp/split/$filename
done
/usr/bin/split -b15m /tmp/$TODAY.home.tgz /tmp/split/
/bin/rm -f /tmp/$TODAY.home.tgz
/bin/ls -1 /tmp/split/|while read filename; do
cat /tmp/split/$filename|/usr/bin/uuencode home-$filename.uue|/bin/mail -s $TODAY-backup-home-$filename $MAILTO
/bin/sleep 30
/bin/rm -f /tmp/split/$filename
done

MAILTO変数の宛先に/etcと/homeのtar+gzファイル、MySQLダンプのgzファイルを送りつける。
etcは1メールで送れるが、homeとMySQLはサイズが大きくGMailに弾かれるので、15MBに切り分けて送信している。 また、一気に送ろうとするとサーバのリソース消費が大きいので、sendmailがGMailに転送する待機時間として30秒のスリープを挟んでいる。

(8)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP]   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です