宇宙主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

欧基零壹微头条IP归属甄别会员请立即修改密码
查看: 18025|回复: 48

[疑问] DropBox定时备份方案,非网页上传,非常好用

  [复制链接]
发表于 2012-3-25 17:46:28 | 显示全部楼层 |阅读模式
本帖最后由 helps 于 2012-3-25 19:53 编辑

另外一贴是以前登陆网站上传备份,不那么好用,而且使用网站上传有限制.
我这个备份方案是直接使用dropbox同步,如果想实时同步就一直守护dropbox进程,会占用一定资源.推荐小内存的VPS和我一样使用cron定时备份.

1.linux上安装dropbox
32位linux
  1. wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86
复制代码
64位linux
  1. wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64
复制代码
解压:
  1. tar xzvf dropbox.tar.gz
复制代码
第一次运行生成host_id
  1. ~/.dropbox-dist/dropboxd &
复制代码
生成id后,将host_id替换下面链接后面的字符在浏览器打开,输入你的帐号密码就绑定机器了.
  1. https://www.dropbox.com/cli_link?host_id=XXXXXXXXXXXXXXXXXXX
复制代码
2.建立连接备份网站
正式开始同步你的网站,通过ln软链接你所有要备份的目录,例如:
  1. cd ~/Dropbox
  2. ln -s /home/wwwroot/html
  3. ln -s /home/wwwroot/htdocs
  4. ...
复制代码
开始运行同步,美国的vps同步速度非常快的,1G的html文件,只花了几分钟全部同步完成
  1. ~/.dropbox-dist/dropboxd &
复制代码
3.为了节省资源,可以不使用实时同步,只定时打开同步一天的文件再关掉以节省资源.
先关掉同步:
  1. killall dropbox
复制代码
编写定时同步脚本:
  1. vi backup.sh
复制代码
代码如下:
  1. #!/bin/sh
  2. start() {
  3. echo starting dropbox
  4. /root/.dropbox-dist/dropboxd &
  5. }
  6. stop() {
  7. echo stoping dropbox
  8. pkill dropbox
  9. }
  10. case "$1" in
  11. start)
  12. start
  13. ;;
  14. stop)
  15. stop
  16. ;;
  17. restart)
  18. stop
  19. start
  20. ;;
  21. esac
复制代码
定时运行和关闭:
  1. chmod +x backup.sh
  2. crontab -e
复制代码
每天4点开始同步,5点关闭同步.
其实一般每天更新数据不多不用打开这么长时间,我自己用的一天只打开10分钟,这个根据各人每天更新的数据量自己来设置.
  1. 0 4 * * * sh /root/backup.sh restart
  2. 0 5 * * * sh /root/backup.sh stop
复制代码
4.干脆把我从网上找的备份数据库的脚本一并贡献出来,适合懒人使用
  1. vi bakmysql.sh
复制代码
脚本如下:
  1. #!/bin/bash
  2. DBName=修改为数据库名
  3. DBUser=修改为数据库用户名
  4. DBPasswd=修改为数据库密码
  5. BackupPath=/root/Dropbox/
  6. LogFile=/root/db.log
  7. DBPath=/usr/local/mysql/var/ #备份的数据库目录
  8. #BackupMethod=mysqldump
  9. #BackupMethod=mysqlhotcopy
  10. #BackupMethod=tar

  11. NewFile="$BackupPath"db$(date +%y%m%d).tgz
  12. DumpFile="$BackupPath"db$(date +%y%m%d)
  13. OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz  #自动删除5天前的备份
  14. echo "-------------------------------------------" >> $LogFile
  15. echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
  16. echo "--------------------------" >> $LogFile
  17. #Delete Old File
  18. if [ -f $OldFile ]
  19. then
  20.         rm -f $OldFile >> $LogFile 2>&1
  21.         echo "[$OldFile]Delete Old File Success!" >> $LogFile
  22. else
  23.         echo "[$OldFile]No Old Backup File!" >> $LogFile
  24. fi
  25. if [ -f $NewFile ]
  26. then
  27.         echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile
  28. else
  29.         case $BackupMethod in
  30.         mysqldump)
  31.                 if [ -z $DBPasswd ]
  32.                 then
  33.                         mysqldump -u $DBUser --opt $DBName > $DumpFile
  34.                 else
  35.                         mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
  36.                 fi
  37.                 tar czvf $NewFile $DumpFile >> $LogFile 2>&1
  38.                 echo "[$NewFile]Backup Success!" >> $LogFile
  39.                 rm -rf $DumpFile
  40.                 ;;
  41.         mysqlhotcopy)
  42.                 rm -rf $DumpFile
  43.                 mkdir $DumpFile
  44.                 if [ -z $DBPasswd ]
  45.                 then
  46.                         mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
  47.                 else
  48.                         mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
  49.                 fi
  50.                 tar czvf $NewFile $DumpFile >> $LogFile 2>&1
  51.                 echo "[$NewFile]Backup Success!" >> $LogFile
  52.                 rm -rf $DumpFile
  53.                 ;;
  54.         *)
  55.                 service mysql stop >/dev/null 2>&1
  56.                 tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
  57.                 service mysql start >/dev/null 2>&1
  58.                 echo "[$NewFile]Backup Success!" >> $LogFile
  59.                 ;;
  60.         esac
  61. fi
  62. echo "-------------------------------------------" >> $LogFile
复制代码
5.删除卸载dropbox方法:
  1. killall dropbox
  2. rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py
复制代码

评分

参与人数 12威望 +166 收起 理由
rightnow5 + 1 很给力!神级
gdtv + 20 赞一个!
thoughcn + 10 很给力!
454309099 + 15 技术党
Wyane + 20 技术贴支持一个!!!

查看全部评分

发表于 2012-3-25 17:48:00 | 显示全部楼层
纯技术贴 我喜欢
发表于 2012-3-25 17:56:42 | 显示全部楼层
技术贴 我喜欢
发表于 2012-3-25 18:03:21 | 显示全部楼层
技术贴 我喜欢
发表于 2012-3-25 18:04:05 | 显示全部楼层
谢谢楼主分享自己的技术,呵呵~!
发表于 2012-3-25 18:07:34 | 显示全部楼层
好吧,我去试试
发表于 2012-3-25 18:11:36 | 显示全部楼层
不错  技术帖
发表于 2012-3-25 18:18:39 | 显示全部楼层
支持
发表于 2012-3-25 18:22:22 | 显示全部楼层
纯技术贴 我喜欢
发表于 2012-4-19 14:54:17 | 显示全部楼层
赞一个!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宇宙主机交流论坛

GMT+8, 2024-10-30 15:33 , Processed in 0.084420 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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