全球主机交流论坛

标题: 自动备份网站文件和数据库上传到FTP空间(10月7日更新) [打印本页]

作者: Cat    时间: 2010-8-8 15:07
标题: 自动备份网站文件和数据库上传到FTP空间(10月7日更新)
10月7日更新,导出的每个数据库为单独一个,然后压缩在一个压缩包,现在你只要修改以下选项就能用了.

#你要修改的地方从这里开始
MYSQL_USER=root                             #mysql用户名
MYSQL_PASS=123456                      #mysql密码
[email protected]                 #数据库发送到的邮箱
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. [email protected]                 #数据库发送到的邮箱
  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 编辑 ]
作者: edmin    时间: 2010-8-8 15:10
一会试试去
作者: taian    时间: 2010-8-8 15:13
学习
作者: Cat    时间: 2010-8-8 15:27
我已经测试成功...

但整理可能有错误...帮忙检查..
作者: se7en    时间: 2010-8-8 16:03
不错
作者: youland    时间: 2010-8-8 16:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: klocal    时间: 2010-8-8 16:21
不太明白哟
作者: ATOM    时间: 2010-8-8 16:27
嗯不错.很多人需要.
作者: Cat    时间: 2010-8-8 16:36
原帖由 youland 于 2010-8-8 16:17 发表
删除ftp空间5天前
这个原理是什么?
ftp也可以执行脚本??


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

原理就是你用ftp软件删除远程文件一个道理
作者: 批发杯具    时间: 2010-8-8 18:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: kok    时间: 2010-8-8 18:56
收藏...   谢谢楼主分享
作者: 雨落无声    时间: 2010-8-8 23:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 刹那芳华    时间: 2010-8-9 13:29
额……额……先看看……
作者: cgsyzdd    时间: 2010-8-9 14:40
先保存着

作者: cuxian    时间: 2010-8-9 15:09
好东西啊
作者: sunday    时间: 2010-8-9 15:12
猫猫,博客图片露点了
作者: klocal    时间: 2010-8-26 23:05
能不能 备份出 单独的MYSQL呢?  就是 ZIP的形式
打开zip之后能显示出 DB1.SQL  DB2.SQL 的
作者: Cat    时间: 2010-8-26 23:09
标题: 回复 17# 的帖子
你看這條語句
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db1 db2 db3 > /home/backup/databackup.sql
#压缩数据库
tar zcf /home/backup/$DataBakName /home/backup/databackup.sql

如果改成
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db1 > /home/backup/db1.sql
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db2 > /home/backup/db2.sql
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db3 > /home/backup/db3.sql

tar zcf /home/backup/$DataBakName /home/backup/*.sql
*.sql代表壓縮所有sql文件

然後刪除命令要改為
rm -rf /home/backup/d*.sql
作者: domin    时间: 2010-8-26 23:14
不错
作者: klocal    时间: 2010-8-26 23:17
回复速度超级快 爱上你了
作者: serverpoint    时间: 2010-8-27 00:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: 卜卜口の    时间: 2010-8-27 01:11
很不错的东西~
作者: jamimes    时间: 2010-8-27 04:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: jamimes    时间: 2010-8-27 04:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 大飞机    时间: 2010-8-27 10:47
好东西 就是看不懂
作者: needvps    时间: 2010-8-27 10:50
用rsync会更方便
作者: ebizhost    时间: 2010-8-31 20:48
#导出mysql数据库
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db1 db2 db3 > /home/backup/databackup.sql
================
有人知道这段在kloxo环境里应该怎么改嘛?谢谢

[ 本帖最后由 ebizhost 于 2010-9-1 06:26 编辑 ]
作者: jiangchunlin    时间: 2010-8-31 20:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: Captain    时间: 2010-9-1 06:23
请教
mysqldump -uroot -p123456 --databases db1 db2 db3

如果要把mysql中所有数据库(不自己指定,默认所有库名)以“每个单独的数据库名.sql”格式备份下来,应该怎么写
作者: Captain    时间: 2010-9-1 21:39
楼主在不
作者: Cat    时间: 2010-9-1 21:57
原帖由 Cat 于 2010-8-26 23:09 发表
你看這條語句
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db1 db2 db3 > /home/backup/databackup.sql
#压缩数据库
tar zcf /home/backup/$DataBakName /home/backup/databackup.sql

如果改成
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db1 > /home/backup/db1.sql
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db2 > /home/backup/db2.sql
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db3 > /home/backup/db3.sql

tar zcf /home/backup/$DataBakName /home/backup/*.sql
*.sql代表壓縮所有sql文件

然後刪除命令要改為
rm -rf /home/backup/d*.sql



18楼我已经回复了~~
作者: ebizhost    时间: 2010-9-1 22:05
LZ,那我的呢?直接改成
mysqldump -uroot -p123456 --databases db1 db2 db3 > /home/backup/databackup.sql

对吗?谢谢
作者: Captain    时间: 2010-9-1 22:11
原帖由 Cat 于 2010-9-1 21:57 发表



18楼我已经回复了~~

可能没理解我的意思,18楼的没办法备份新增加的库,需要手动添加
我希望默认可以备份所有mysql库,并且单独备份成 数据库名.sql
作者: Cat    时间: 2010-9-1 22:19
标题: 回复 33# 的帖子
过几天先,以前弄过.现在忘记了....你先暂时手动修改吧
作者: Captain    时间: 2010-9-1 22:20
原帖由 Cat 于 2010-9-1 22:19 发表
过几天先,以前弄过.现在忘记了....你先暂时手动修改吧

OK,等待Cat技术牛人的解决方案了
作者: phpwinder    时间: 2010-9-7 10:59
直接执行脚本可以,但没有自动运行。
作者: phpwinder    时间: 2010-9-7 11:04
奇怪,安装crontab:
yum install crontabs
显示已经安装过了。

但/sbin/service crond start //启动服务显示:crond: unrecognized service
service crond status,这个也是同样的。
作者: 卡恩    时间: 2010-9-7 18:12
标题: 回复 37# 的帖子
安装计划任务:
yum -y install vixie-cron

作者: phpwinder    时间: 2010-9-8 13:14
标题: 回复 38# 的帖子
刚把这个卸载,还要安装这个啊。
作者: shock    时间: 2010-9-23 07:16
用了之后,lnmp就死掉了。要重启lnmp  

sql 500多M。压缩之后160M。
网站很多缓存文件,压缩之后40多M。

是不是dump和tar的时候令lnmp资源不够而死掉了
作者: 卡恩    时间: 2010-9-23 10:27
标题: 回复 40# 的帖子
openvz的vps?
作者: serverpoint    时间: 2010-9-23 10:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: happyham    时间: 2010-9-23 10:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: shock    时间: 2010-9-23 22:49
原帖由 卡恩 于 2010-9-23 10:27 发表
openvz的vps?


xen hvm
作者: shangpan    时间: 2010-9-25 19:46
等会试试去。
作者: webwater    时间: 2010-10-7 17:40
这个很不错啊
作者: cres    时间: 2010-10-7 18:04
前天刚用了这个,没想到作者更新了,不错,谢谢楼主。
作者: mojave    时间: 2010-10-7 22:11
以前做过失败的让我内流满面
作者: press    时间: 2010-10-7 22:19
不是太懂。新手学习。先收藏了
作者: dakai    时间: 2010-10-7 22:29
很好很强大
作者: 大飞机    时间: 2010-10-7 22:56
谢谢持久的 猫

对于国外上到godaddy速度还不错
作者: afterx    时间: 2010-10-7 22:57
收藏一下~
作者: wHOaMi    时间: 2010-10-8 08:09
原來又更新了 0.0~ 謝謝貓! 這篇對我有些啟發呢!
作者: vclove    时间: 2010-10-8 08:30
收藏
作者: 狒狒    时间: 2010-10-13 22:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: shock    时间: 2010-10-14 01:10
这东西我试了,但是有问题,每次备份完之后,网站就慢的像死掉一样,要重启lnmp才行。
我的数据库才500M,网站100M,缓存文件比较多,怎样可以指定不备份缓存文件呢。
作者: shock    时间: 2010-10-14 01:11
原帖由 大飞机 于 2010-10-7 22:56 发表
谢谢持久的 猫

对于国外上到godaddy速度还不错

国外上狗爹也挺慢的




欢迎光临 全球主机交流论坛 (https://52.ht/) Powered by Discuz! X3.4