全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 3996|回复: 11

[疑问] 一键备份脚本 网站及数据库 至邮箱和ftp debian6 版本

[复制链接]
发表于 2013-2-6 22:00:44 | 显示全部楼层 |阅读模式
本帖最后由 myzim 于 2013-5-6 19:21 编辑
  1. #你要修改的地方从这里开始
  2. MYSQL_USER=root                             #mysql用户名
  3. MYSQL_PASS=qq123                      #mysql密码
  4. MAIL_TO=qq@gmail.com                #数据库发送到的邮箱
  5. FTP_USER=qq@gmail.com                             #ftp用户名
  6. FTP_PASS=qq123                   #ftp密码
  7. FTP_IP=onlinefilefolder.com                        #ftp地址
  8. FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
  9. WEB_DATA=/home/wwwroot/qq.com                       #要备份的网站数据
  10. #你要修改的地方从这里结束
复制代码
建目录:
  1. mkdir -p /home/backup
复制代码
首先安装Email发送组件
  1. apt-get install sendmail mutt
复制代码
VPS安装好lftp:
  1. apt-get install lftp
复制代码
接着给脚本执行权限
  1. chmod +x AutoBackupToFtp.sh
复制代码
Debian下面安装Crontab命令:
apt-get install cron             //大部分情况下Debian都已安装。

/etc/init.d/cron restart    //重启Crontab

添加crontab定时执行任务
crontab -e
输入
  1. 00 00 * * * /root/AutoBackupToFtp.sh
复制代码
(脚本存放路径。这样就实现了每天00:00自动备份网站文件和数据库上传到FTP空间)
Ctrl+x退出,再输y 回车保存。

更多的crontab使用方法参考军哥的。 Linux VPS/服务器上用Crontab来实现VPS自动化      http://www.vpser.net/manage/crontab.html

debian下crontab不执行的解决方案,多数是时区问题。

解决方案:
debian中cron会读/etc/timezone来做为时区,我们需要编辑
/etc/timezone,把里面全部删除,然后添加Asia/Shanghai,这样是设置为上海时区,最后重启一下cron,再运行看看是否生效。
更多原因请参考主机码的帖子:http://www.hostloc.com/thread-122182-1-1.html

最后贴一个脚本代码,猫大的原来是ftp,看到很多基友反应debian下ftp不能成功备份。我已经改成lftp的。代码如下:
  1. #!/bin/bash
  2. #你要修改的地方从这里开始
  3. MYSQL_USER=root                          #mysql用户名
  4. MYSQL_PASS=qq123                      #mysql密码
  5. MAIL_TO=qq@gmail.com                     #数据库发送到的邮箱
  6. FTP_USER=qq@gmail.com                    #ftp用户名
  7. FTP_PASS=qq123                           #ftp密码
  8. FTP_IP=onlinefilefolder.com              #ftp地址 (ip或者域名)
  9. FTP_backup=backup                        #ftp上存放备份文件的目录,这个要自己得ftp上面建的
  10. WEB_DATA=/home/wwwroot/qq.com            #要备份的网站数据
  11. #你要修改的地方从这里结束
  12. #定义数据库的名字和旧数据库的名字
  13. DataBakName=Data_$(date +"%Y%m%d").tar.gz
  14. WebBakName=Web_$(date +%Y%m%d).tar.gz
  15. OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
  16. OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz
  17. #删除本地3天前的数据
  18. rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz
  19. cd /home/backup
  20. #导出数据库,一个数据库一个压缩文件
  21. for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
  22. (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 > ${db}.sql.gz)
  23. done
  24. #压缩数据库文件为一个文件
  25. tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
  26. rm -rf /home/backup/*.sql mysqldata
  27. #发送数据库到Email,如果数据库压缩后太大,请注释这行
  28. echo "主题:数据库备份" | mutt -a /home/backup/$DataBakName -s "内容:数据库备份" $MAIL_TO
  29. #压缩网站数据
  30. tar zcf /home/backup/$WebBakName $WEB_DATA
  31. #上传到FTP空间,删除FTP空间5天前的数据
  32. lftp $FTP_IP -u $FTP_USER,$FTP_PASS << EOF
  33. cd $FTP_backup
  34. mrm $OldData
  35. mrm $OldWeb
  36. mput $DataBakName
  37. mput $WebBakName
  38. bye
  39. EOF
复制代码
AutoBackupToFtp.zip (1.02 KB, 下载次数: 669)



debian 6 32位运行成功,理论上 debian和Ubuntu 都支持。。。

新人备份数据必备,老鸟飘过!参考各位前人的经验总结了一下,造福大家哈,

ftp空间推荐GODADDY ONLINE STORAGE。

centos 的版本可以去猫大的空间看,不再累赘啦,
猫大的centos版本链接
http://imcat.in/auto-backup-site-files-database-upload-ftp/
发表于 2013-2-6 22:01:13 | 显示全部楼层
不错不错。。。。。。。。。
发表于 2013-2-6 22:02:15 | 显示全部楼层
感谢猫大分享!!!!!
发表于 2013-2-6 22:02:56 | 显示全部楼层
+100
发表于 2013-2-6 22:05:19 | 显示全部楼层

感谢猫大分享!!!!!
发表于 2013-2-6 22:05:27 | 显示全部楼层
谁做个至N个网盘,XAE版本。
发表于 2013-2-6 22:07:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-2-6 22:08:47 | 显示全部楼层
wput 更稳定
发表于 2013-2-6 22:15:32 | 显示全部楼层
感谢分享
发表于 2013-2-6 22:17:57 | 显示全部楼层
是的 之前都有备份成功的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-15 22:21 , Processed in 0.159450 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表