某储备粮的“学习笔记” - backup http://blog.gregwym.info/tag/backup/ linux服务器`自动备份数据库+网页到邮箱 http://blog.gregwym.info/linux-fu-wu-qi-%60-zi-dong-bei-fen-shu-ju-ku---wang-ye-dao-you-xiang.html 2011-04-05T10:11:48+08:00 我的QQ邮箱现在已经有3T容量了...原来玩WordPress的时候其实就一直拿来做数据库备份, 现在容量变大几倍有余, 自然是备份的不二选择. 这可比FDC的大容量VPS划算多了, 特别是当你的网站并没有多大的时候. (书苑现在的数据库也都还没有1G...)这个脚本来自小夜博客, 经我略加修改了一下.下载: backup_to_mail.sh很简单的一段bash script, 只需要自定义下mysql的用户名密码, 邮箱地址和要备份的目录.然后进行下边的步骤:首先要建立好放置备份文件的目录mkdir /home/backup 然后安装发送邮件的程序yum install sendmail mutt 把backup_to_mail.sh放到刚刚建立的目录中, 然后给脚本增加运行权限chmod a+x /home/backup/backup_to_mail.sh 最后一步是设置定时运行, 输入crontab -e 然后在vi编辑界面中加入下面这行文字00 00 * * * /home/backup/backup_to_mail.sh :x + enter就ok了.其中00 00表示在每日00分, 00点的时候运行该脚本.下边是脚本的内容, 以备附件失效和以后学习...#!/bin/bash MYSQL_USER=root #mysql username MYSQL_PASS=*********** #mysql password MAIL_TO=*******@***.** #mailling to WEB_DATA=/home/wwwroot/ #to be backup dir #define variables DataBakName=Data_$(date +%Y%m%d).tar.gz WebBakName=Web_$(date +%Y%m%d).tar.gz OldData=Data_$(date -d -3day +%Y%m%d).tar.gz OldWeb=Web_$(date -d -3day +%Y%m%d).tar.gz DataSubject="Backup: gregwym.info database "$(date +%Y%m%d) WebSubject="Backup: gregwym.info web dir "$(date +%Y%m%d) #delete data from 3days earlier rm -rf /home/backup/$OldData /home/backup/$OldWeb cd /home/backup #export database to compressed gz files for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do (/usr/local/mysql/bin/mysqldump --single-transaction -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) done #compress database files tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz rm -rf /home/backup/*.sql.gz #mail database echo $DataSubject | mutt -a /home/backup/$DataBakName -s "${DataSubject}" $MAIL_TO #compress backup dir tar zcf /home/backup/$WebBakName $WEB_DATA #mail dir echo $WebSubject | mutt -a /home/backup/$WebBakName -s "${WebSubject}" $MAIL_TO echo "bye" #END 如果不希望备份网页文件, 或者希望数据库和网页分别备份的, 可以自行拆分脚本为两个文件.如果只是想降低备份网页文件的频率, 可以将#mail dir部分替换为:if [ $(date +%A) = "Sunday" ]; then echo $WebSubject | mutt -a /home/backup/$WebBakName -s "${WebSubject}" $MAIL_TO fi