本备份主要功能:
1.可以自动定时备份指定的网站数据跟数据库到指定的FTP空间!
2.自动删除旧的备份数据,可以随意设置保留天数!
3.数据库备份采取三保险,备份到FTP同时也备份到设置的EMAIL(附件),直接打包数据库,可到处数据库双备份!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | MYSQL_USER=root #mysql用户名 MYSQL_PASS=123456 #mysql密码 MAIL_TO=whhack@whhack.com #数据库发送到的邮箱 FTP_USER=whhack #ftp用户名 FTP_PASS=123456 #ftp密码 FTP_IP=whhack.com #ftp地址 FTP_backup=backup #ftp上存放备份文件的目录,自己上ftp上面建 WEB_DATA=/home/www #要备份的网站数据 |
开始前,需要安装或者事前的工作:
1.mkdir -p /home/backup #建立备份目录
2.安装Email发送组件 yum install sendmail mutt
3.安装zip压缩 yum install zip
4.安装crontab
yum -y install gcc gcc-c++ autoconf vixie-cron
yum -y install gcc gcc-c++ autoconf crontabs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #要修改的地方开始 MYSQL_USER=root #mysql用户名 MYSQL_PASS=123456 #mysql密码 MAIL_TO=whhack@whhack.com #数据库发送到的邮箱 FTP_USER=whhack #ftp用户名 FTP_PASS=123456 #ftp密码 FTP_IP=whhack.com #ftp地址 FTP_backup=backup #ftp上存放备份文件的目录,这个要自己得ftp上面建的 WEB_DATA=/home/www #要备份的网站数据 #要修改的地方结束 #定义数据库的名字和旧数据库的名字 DataBakName=Data_$(date +"%Y%m%d").tar.gz WebBakName=Web_$(date +%Y%m%d).tar.gz OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz #删除本地3天前的数据 rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz cd /home/backup #导出数据库,一个数据库一个压缩文件 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 -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) done #压缩数据库文件为一个文件 zip -r /home/backup/data.zip /usr/local/mysql/var/ #这里是数据库目录直接打包,可以选择性打包 zip -r /home/backup/sqldata.zip /home/backup/*.sql.gz tar zcf /home/backup/$DataBakName /home/backup/*.zip rm -rf /home/backup/*.zip rm -rf /home/backup/*.sql.gz #发送数据库到Email,如果数据库压缩后太大,请注释这行 echo "主题:数据库备份" | mutt -a /home/backup/$DataBakName -s "内容:数据库备份" $MAIL_TO #压缩网站数据 tar zcf /home/backup/$WebBakName $WEB_DATA #上传到FTP空间,删除FTP空间5天前的数据 ftp -v -n $FTP_IP << END user $FTP_USER $FTP_PASS type binary cd $FTP_backup delete $OldData delete $OldWeb put $DataBakName put $WebBakName bye END |
保存以上代码脚本为aotoback.sh
这里顺便说下: bash脚本:/bin/sh^M:bad interpreter: No such file or directory
原因: 与一些windows文件在linux下打开后出现^M符号类似。
解决方法: 在vim中查看文件的fileformat, 如果为DOS则改为unix
1 2 3 | set fileformat set fileformat=unix |
给备份脚本权限
1 | chmod +x aotoback.sh |
crontab 实现自动备份
1 | crontab -e |
每天晚上4点开始备份
1 | 00 4 * * * /home/aotoback.sh |
下面说一下一些技巧:
如果你只想备份某一个数据库,可以建立一个只对你要备份的数据库有权限的用户,在上面填写此用户即可实现!
然后就是备份网站不需要连程序都备份,如果数据太大,那么备份时间又长,还会导致一些问题,可以只备份附件等目录即可,可以自行修改,灵活处理!
最后发一个DZX2备份的实例,可以参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #!/bin/bash MYSQL_USER=webback MYSQL_PASS=123456 MAIL_TO=whhack.com@gmail.com FTP_USER=whhack FTP_PASS=123456 FTP_IP=whhack.com FTP_backup=web.com/day DataBakName=Data_$(date +"%Y%m%d").tar.gz WebBakName=Web_$(date +%Y%m%d).tar.gz OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz OldWeb=Web_$(date -d -32day +"%Y%m%d").tar.gz rm -rf /home/backup/day/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/day/Web_$(date -d -3day +"%Y%m%d").tar.gz cd /home/backup/day 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 -u$MYSQL_USER -p$MYSQL_PASS ${db} --skip-lock-tables | gzip -9 - > ${db}.sql.gz) done zip -r /home/backup/day/web001.zip /usr/local/mysql/var/web/ zip -r /home/backup/day/sql000.zip /home/backup/day/*.sql.gz tar zcf /home/backup/day/$DataBakName /home/backup/day/*.zip rm -rf /home/backup/day/*.zip rm -rf /home/backup/day/*.sql.gz echo "数据库:web-mysql-beifen_$(date +"%Y%m%d")" | mutt -a /home/backup/day/$DataBakName -s "数据库:web-mysql-beifen_$(date +"%Y%m%d")" $MAIL_TO WEB_DATA1=/home/wwwroot/web.com/data/attachment/forum/$(date -d -1day +"%Y%m/%d")/ WEB_DATA2=/home/wwwroot/web.com/data/attachment/album/$(date -d -1day +"%Y%m/%d")/ WEB_DATA3=/home/wwwroot/web.com/data/attachment/portal/$(date -d -1day +"%Y%m/%d")/ zip -r /home/backup/day/forum.zip $WEB_DATA1 zip -r /home/backup/day/album.zip $WEB_DATA2 zip -r /home/backup/day/portal.zip $WEB_DATA3 tar zcf /home/backup/day/$WebBakName /home/backup/day/*.zip rm -rf /home/backup/day/*.zip echo "每日附件:web-web-beifen_$(date +"%Y%m%d")" | mutt -a /home/backup/day/$WebBakName -s "每日附件:web-web-beifen_$(date +"%Y%m%d")" $MAIL_TO /usr/local/php/sbin/php-fpm restart ftp -v -n $FTP_IP << END user $FTP_USER $FTP_PASS type binary cd $FTP_backup delete $OldData delete $OldWeb put $DataBakName put $WebBakName bye END |
原文链接:https://xiaohost.com/441.html,转载请注明出处。
评论0