专栏首页积木居实例:Centos使用DropBox定时同步备份方案详解

实例:Centos使用DropBox定时同步备份方案详解

原文地址:http://www.85sb.com/126.html

一直以来,使用美帝VPS建站,由于网速等多方面原因,面临着备份困难、下载困难的难题,而且还要面临故障啊、商家跑路啊等等数据丢失的风险,前段时间DS不是数据都木有了么。现在就来讲一下解决这个问题的方法,早些时候有用脚本通过FTP来备份的,例如使用godaddy域名附带的免费空间或者另外单独购买备份空间,但有时并不好用;也有两台VPS同步备份的,这个花费有点高。而现在使用DropBox来进行同步备份,全自动化,非常好用,去年就有过类似的介绍,但很多都不详细,搜集了网上的方法,特别整理出来,所有过程都有详细注明。

————————————————————————————————————

DropBoxDropbox是一个提供同步本地文件的网络存储在线应用。支持在多台电脑多种操作中自动同步。(注:要使用https才能访问,至于http不能访问的原因,都懂的) 容量大小:初始的免费容量是2G,完成上手任务后可以多增加250M。用官方提供的邀请链接,每一个成功邀请注册可获赠500M,可以最大扩容到18.25G。邀请那个了比较麻烦,在淘宝上有专门以扩容为业务的店铺,大概RMB8元左右就可以了。此外,偶尔官方会有些活动,例如今年2月有一个安装beta版客户端导入图片送5G的活动,不过现在已经失效了。

————————————————————————————————————

一、安装Dropbox linux客户端:(官方简易教程:点击我前往)

ssh登陆,在root目录下输入以下命令,视版本不同而选择:(注:code中已包含cd到root根目录的命令,而且只有在root根目录下后续步骤才能生效) 32-bit:

  1. cd ~ && wget -O – “http://www.dropbox.com/download?plat=lnx.x86” | tar xzf –

64-bit:

  1. cd ~ && wget -O – “http://www.dropbox.com/download?plat=lnx.x86_64” | tar xzf –

下载后已自动解压,不需要再执行解压命令。

二、Dropbox与机器绑定

执行以下命令:

  1. ~/.dropbox-dist/dropboxd &

第一次执行会生成“host_id”,这机器与Dropbox进行绑定的唯一字符串,提示的信息是一个链接,而且会重复滚动出现直到绑定完成。复制这个链接在浏览器里访问,输入Dropbox帐户和密码就可以了,输入后会自动跳转到Dropbox主界面并且会有绑定成功的提示,此时在ssh客户端里也会有提示并且停止滚动,再按回车键就完成绑定。

(注:官方的运行命令结尾没有“&”这个符号,在centos下运行会出现ssh冻结无反应的情况,据称Debian也会。实际上守护进程已经在运行了。)

三、建立目录软链接

在root目录下生成的“Dropbox”文件夹(linux文件夹名称区分大小写的),就是Windows里叫做“同步目录”的文件夹,只要把文件放置在里面就会同步。在未同步之前,里面有一个文件夹“.dropbox.cache”和一个文件“.dropbox”。当然我们不可能把网站放置到这里,因此我们需要在里面建立软链接就行了,使用ln命令建立软链接(软链接其实就是windows里的快捷方式),格式是:ln –s 源文件 目标文件,我可以先进入“Dropbox”文件夹,免去每次都需要输入目标文件的麻烦。过程如下:

  1. cd ~/Dropbox
  2. ln -s /home/wwwroot

释义:进入“Dropbox”文件夹,建立/home/wwwroot/ 文件夹的软链接。运行这两个命令后会在“Dropbox”文件夹下生成一个名为“wwwroot”的软链接。如果网站放在不同地方的话,那么就建立多个软链接就好。

四、运行同步守护进程,同步网站数据

输入以下命令,这个命令就是之前绑定“host_id”的那个命令。

  1. ~/.dropbox-dist/dropboxd &

运行此命令后,视数据大小和网络环境而定,反正美帝的VPS同步都很快,会在浏览器里的Dropbox文件管理界面里看到同步的文件夹。同时,在“Events(活动)”里看到同步记录,记录里有文件数量和文件夹数量,机器与Dropbox帐户的绑定日志也会记录在里面,这个其实就是Dropbox的帐户活动记录。

五、定时同步,节约内存资源

运行守护进程是要占用一定内存的,为了节约这部分内存,可以通过定时运行脚本来控制。过程如下:

在第三步是进入了“Dropbox”文件夹的,我们一般把脚本放在root目录下,因此需要回到root根目录,执行:

  1. cd ~

首选需要关掉守护进程,运行:

  1. killall dropbox

编写定时同步脚本:

  1. vi backup.sh

用vi编辑器新建backup.sh目录,运行后会进入vi编辑器,此时按“I”键进入编辑模式,复制以下代码粘贴进去,按ESC键退出编辑模式,开启大写锁定状态(按“Caps Lock”键),再按两次“Z”键即自动保存并退出vi编辑器。

  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

继续运行以下命令,用“chmod”命令为“backup.sh”添加可执行权限:

  1. chmod +x backup.sh

编写周期性执行指令:

  1. crontab -e

“crontab”命令运行后会自动调用内置的vi编辑器进行编辑,按“I”键进入编辑模式,复制以下两行指令代码并粘贴。

  1. 0 4 * * * sh /root/backup.sh restart
  2. 0 5 * * * sh /root/backup.sh stop

上面的意思是在每天4点开始同步,5点关闭同步,一个小时一般都够用,除非网站特别大。完成后按“ESC”退出编辑模式,开启大写锁定状态,再按两次“Z”键即自动保存并退出vi编辑器。附:“crontab -l” 列出目前的时程表,“crontab -r” 删除目前的时程表,“crontab”指令的详细介绍可以参考这里>>点我传送,可自行调整同步时间。查看系统当前时间的命令是“date”。

六、同步mysql数据库的脚本

创建数据库备份脚本:

  1. vi bakmysql.sh

按“I”键进入编辑模式,复制以下代码并粘贴(文字部分填写需填写完好才行),按“ESC”退出编辑模式,开启大写锁定状态,再按两次“Z”键即自动保存并退出vi编辑器。

  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

保存好脚本后别忘了加上可执行权限,你也可以定时运行哦,执行后自动在同步目录里生成备份,守护进程运行后则自动同步了。

七、卸载dropbox方法

停止守护进程,删除目录就好了。分别执行以下命令:

  1. killall dropbox
  2. rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py

八、重装系统或者转移后如何使用Dropbox恢复VPS数据

1、进行上面第一步和第二步后,就会自动在同步目录“Dropbox”里出现原先备份的文件夹,注意,这不是软链接,这是同步过来的文件。

2、稍等片刻,等同步完成后手工移动到你想要放置数据的目录,然后重新在同步目录建立一下软链接就好了。

注:过程实际上是先同步数据到同步目录里,转移文件夹时在Dropbox服务器上自动执行了删除操作,当建立软链接后,又开始同步Dropbox到服务器上。如果想节约流量,那么可以先结束掉守护进程,再建立软链接,在Dropbox的网页操作界面上点击“回收站”那个图标,显示出已经删除的数据,右键选择“恢复”即可恢复回来,那么同步时只是对比,不会再上传。

☞ 引用链接,本文参考过以下两篇文章 ☜

☞ DropBox定时备份方案,非网页上传,非常好用 by:helps ☜ ☞ Linux vps 使用dropbox定时远程本地备份数据 by:xyz ☜

转载请注明:积木居 » 实例:Centos使用DropBox定时同步备份方案详解

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 取消dedecms 推荐文章 标题加粗

    推荐的文章Dedecms系统默认会对其标题加粗,也就是加了。有些用户觉得没有必要,以下介绍取消推荐文档标题加粗的方法: 用记事本打开include目录下的ar...

    用户1191760
  • 千脑中广告位使用方法

    ‘<div><script type=”text/javascript” src=”wz_data/a1.js “></script></div>’

    用户1191760
  • 简单3条命令 彻底清除WDCP占用空间

    WDCP是国内著名的Linux管理控制面板,界面清爽简洁。对于一些不会使用Linux服务器的朋友来说是一个不错的选择。但使用一段时间的WDCP,您会发现硬盘被大...

    用户1191760
  • 实例:Centos使用DropBox定时同步备份方案详解

    用户1272546
  • Kafka剖析系列之Benchmark

    性能测试及集群监控工具 本章将介绍Kafka提供的性能测试工具,Metrics报告工具及Yahoo开源的Kafka Manager。 Kafka性能测试脚本 $...

    用户1263954
  • Windows 环境搭建 ftp 服务器

    一、什么是ftp? FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件...

    周俊辉
  • 10.2 Git 内部原理 - Git 对象

    Git 是一个内容寻址文件系统。 看起来很酷, 但这是什么意思呢? 这意味着,Git 的核心部分是一个简单的键值对数据库(key-value data sto...

    shaonbean
  • SAP 配置库存地点级转储订单的交货类型和检查规则

    系统弹出对话框如图 2所示,要求选择操作的采购凭证类别,有采购申请、合同等多个类别,这里选择F(采购订单),点击确认键(

    用户5495712
  • ubuntu16.04配置samba解决linux的svn使用舒适问题

    个人感觉,svn的命令行使用起来没有git那么舒适,但是windows上的svn GUI客户端TortoiseSVN 使用非常方便。因此对于经常在虚拟机中做服务...

    职场亮哥
  • 好慌,Redis这么多集群方案,要用哪种?

    redis速度快,可靠性高,是互联网公司的标配。它有单机、主从、哨兵、Cluster等四种部署模式。

    xjjdog

扫码关注云+社区

领取腾讯云代金券