全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[经验] 自动备份网站文件和数据库上传到FTP空间(10月7日更新)

[复制链接]
发表于 2010-8-8 15:07:24 | 显示全部楼层 |阅读模式
10月7日更新,导出的每个数据库为单独一个,然后压缩在一个压缩包,现在你只要修改以下选项就能用了.

#你要修改的地方从这里开始
MYSQL_USER=root                             #mysql用户名
MYSQL_PASS=123456                      #mysql密码
MAIL_TO=cat@hostloc.com                 #数据库发送到的邮箱
FTP_USER=cat                              #ftpl用户名
FTP_PASS=123456                         #ftp密码
FTP_IP=imcat.in                          #ftp地址
FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/www                          #要备份的网站数据
#你要修改的地方从这里结束

别忘记了建目录:mkdir -p /home/backup
如果你的网站数据大于5G小于10G的话,压缩起来会有点困难...

如果小于5G,就没问题了...不过这一切都是看vps的性能而已...
---------------------------------------------------
上班是无聊的,如果不找点事做,我会睡着的...
所以就这个脚本就诞生了..
主要功能有: (标题不是说了嘛!!!!),详细点就是,自动备份网站文件和数据库并上传到FTP空间,在本地保留3天备份,在远端FTP空间保留5天备份.
数据库备份采用发送到Email和FTP空间,双重备份,保证数据的安全.

首先安装Email发送组件
  1. yum install sendmail mutt
复制代码
脚本如下:
  1. #!/bin/bash
  2. #你要修改的地方从这里开始
  3. MYSQL_USER=root                             #mysql用户名
  4. MYSQL_PASS=123456                      #mysql密码
  5. MAIL_TO=cat@hostloc.com                 #数据库发送到的邮箱
  6. FTP_USER=cat                              #ftpl用户名
  7. FTP_PASS=123456                         #ftp密码
  8. FTP_IP=imcat.in                          #ftp地址
  9. FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
  10. WEB_DATA=/home/www                          #要备份的网站数据
  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.gz
  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. ftp -v -n $FTP_IP << END
  33. user $FTP_USER $FTP_PASS
  34. type binary
  35. cd $FTP_backup
  36. delete $OldData
  37. delete $OldWeb
  38. put $DataBakName
  39. put $WebBakName
  40. bye
  41. END
复制代码
下载地址:http://imcat.in/linux/AutoBackupToFtp.sh
下载脚本,给脚本添加权限:
  1. chmod +x AutoBackupToFtp.sh
复制代码
利用crontab 实现自动备份,在ssh下,
  1. crontab -e
复制代码
没有这个命令?请看CentOS安装crontab及使用方法

输入以下内容:
  1. 00 00 * * * /home/AutoBackupToFtp.sh
复制代码
这样就实现了每天00:00自动备份网站文件和数据库上传到FTP空间


转载请注明:http://imcat.in/auto-backup-site-files-database-upload-ftp/

[ 本帖最后由 Cat 于 2010-10-7 22:33 编辑 ]

评分

参与人数 12威望 +161 收起 理由
vclove + 7 感谢分享
Captain + 15 精品文章
yang + 15 恭喜发财
Globalization + 20 精品文章
yxq4319 + 7 精品文章

查看全部评分

发表于 2010-9-1 06:23:58 | 显示全部楼层
请教
mysqldump -uroot -p123456 --databases db1 db2 db3

如果要把mysql中所有数据库(不自己指定,默认所有库名)以“每个单独的数据库名.sql”格式备份下来,应该怎么写
发表于 2010-8-31 20:59:11 | 显示全部楼层
先收藏
发表于 2010-8-27 10:47:44 | 显示全部楼层
好东西 就是看不懂
发表于 2010-8-27 00:07:40 | 显示全部楼层
猫猫真是论坛高人哦。
发表于 2010-8-8 15:10:00 | 显示全部楼层
一会试试去
发表于 2010-8-8 15:13:49 | 显示全部楼层
学习
 楼主| 发表于 2010-8-8 15:27:11 | 显示全部楼层
我已经测试成功...

但整理可能有错误...帮忙检查..

评分

参与人数 1威望 +1 收起 理由
绝对菜鸟 + 1 直接把mysql的var目录给打包,这样和导出那个 ...

查看全部评分

发表于 2010-8-8 16:03:08 | 显示全部楼层
不错

评分

参与人数 1威望 +1 收起 理由
serverpoint + 1 我看你链接了。

查看全部评分

发表于 2010-8-8 16:17:51 | 显示全部楼层
删除ftp空间5天前
这个原理是什么?
ftp也可以执行脚本??
发表于 2010-8-8 16:21:25 | 显示全部楼层
不太明白哟
发表于 2010-8-8 16:27:39 | 显示全部楼层
嗯不错.很多人需要.
 楼主| 发表于 2010-8-8 16:36:16 | 显示全部楼层
原帖由 youland 于 2010-8-8 16:17 发表
删除ftp空间5天前
这个原理是什么?
ftp也可以执行脚本??


是在本地发送ftp命令去删除啦...

原理就是你用ftp软件删除远程文件一个道理
发表于 2010-8-8 18:03:12 | 显示全部楼层
新人表示看不懂汉字部分,怎么个替换法呢?悲剧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-30 17:32 , Processed in 0.072075 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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