サーバのバックアップ置き場として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秒のスリープを挟んでいる。
(140)