【教程】CentOS使用Dropbox开启定时同步

2017年2月23日 0 条评论 154 次阅读 0 人点赞

Dropbox简介:

Dropbox是一款非常好用的免费网络文件同步工具,是Dropbox公司运行的在线存储服务,通过云计算实现因特网上的文件同步,用户可以存储并共享文件和文件夹。Dropbox提供免费和收费服务,Dropbox的收费服务包括Dropbox Pro 和 Dropbox for Business。在不同操作系统下有客户端软件,并且有网页客户端。
当你在电脑A使用Dropbox时,指定文件夹里所有文件的改动均会自动地"同步”到 Dropbox的服务器,当下次你在电脑B需要使用这些文件时,你只需登录你的账户,所有被同步的文件均会自动下载到B电脑中。同样,你在电脑B对某文件的修改,也会体现在电脑A上,而所有这一切均是全自动的,这样你的文件可以说是随时随地都能保持着最新了。将文件放入一台电脑的Dropbox里面去,文件就能即时的同步到Dropbox的服务器端,这些文件在你任何安装了Dropbox的电脑上都可以访问。你可以用电脑或者移动终端从 Dropbox网站来访问这些文件。

安装Dropbox的准备工作:

  • ssh客户端(windows推荐:xshell,Mac自带终端机即可)
  • 有root权限的网站云服务器(vps)

安装Dropbox:

32位:

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

or

cd ~ && wget -O dropbox-lnx.tar.gz http://www.dropbox.com/download?plat=lnx.x86 && killall dropbox; rm -rf.dropbox-dist && tar xzf dropbox* && rm dropbox*

 

64位:

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

or

cd ~ && wget -O dropbox-lnx.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64 && killall dropbox; rm -rf .dropbox-dist && tar xzf dropbox* && rm dropbox*

下载后会自动解压,无需再次执行解压命令

Dropbox与机器绑定:

~/.dropbox-dist/dropboxd &

第一次执行会生成“host_id”,这机器与Dropbox进行绑定的唯一字串,提示的资讯是一个链结,而且会重复滚动出现直到绑定完成。复制这个链结在流览器里访问,输入Dropbox帐户和密码就可以了,输入后会自动跳转到Dropbox主介面并且会有绑定成功的提示,此时在ssh用户端里也会有提示并且停止滚动,再按任意键就完成绑定。
(注:官方的运行命令结尾没有“&”这个符号,在centos下运行会出现ssh冻结无反应的情况,据称Debian也会。实际上守护进程已经在运行了。)

建立目录软链接:

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

cd ~/Dropbox
ln -s /home/wwwroot

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

运行同步守护进程

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

~/.dropbox-dist/dropboxd &

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

开启定时同步

运行守护进程是要占用一定内存的,为了节约这部分内存,可以通过定时运行脚本来控制。过程如下。
在第三步是进入了“Dropbox”档夹的,我们一般把脚本放在root目录下,因此需要回到root根目录,执行:

cd ~

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

killall dropbox

编写定时同步脚本:

vi backup.sh

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

#!/bin/sh
start() {
echo starting dropbox
/root/.dropbox-dist/dropboxd &
}
stop() {
echo stoping dropbox
pkill dropbox
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac

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

chmod +x backup.sh

编写周期性执行指令:

crontab -e

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

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

上面的意思是在每天4点开始同步,5点关闭同步,一个小时一般都够用,除非网站特别大。完成后按“ESC”退出编辑模式,开启大写锁定状态,再按两次“Z”键即自动保存并退出vi编辑器。

同步mysql资料库的脚本

创建资料库备份脚本:

vi bakmysql.sh

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

#!/bin/bash
DBName=修改为资料库名
DBUser=修改为资料库用户名
DBPasswd=修改为资料库密码
BackupPath=/root/Dropbox/dbak/
LogFile=/root/db.log
DBPath=/usr/local/mysql/var/ #备份的资料库目录
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar

NewFile=”$BackupPath”db$(date +%y%m%d).tgz
DumpFile=”$BackupPath”db$(date +%y%m%d)
OldFile=”$BackupPath”db$(date +%y%m%d –date=’5 days ago’).tgz #自动删除5天前的备份
echo “——————————————-” >> $LogFile
echo $(date +”%y-%m-%d %H:%M:%S”) >> $LogFile
echo “————————–” >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >> $LogFile 2>&1
echo “[$OldFile]Delete Old File Success!” >> $LogFile
else
echo “[$OldFile]No Old Backup File!” >> $LogFile
fi
if [ -f $NewFile ]
then
echo “[$NewFile]The Backup File is exists,Can’t Backup!” >>$LogFile
else
case $BackupMethod in
mysqldump)
if [ -z $DBPasswd ]
then
mysqldump -u $DBUser –opt $DBName > $DumpFile
else
mysqldump -u $DBUser -p$DBPasswd –opt $DBName >$DumpFile
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo “[$NewFile]Backup Success!” >> $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >>$LogFile 2>&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName$DumpFile >>$LogFile 2>&1
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo “[$NewFile]Backup Success!” >> $LogFile
rm -rf $DumpFile
;;
*)
service mysql stop >/dev/null 2>&1
tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
service mysql start >/dev/null 2>&1
echo “[$NewFile]Backup Success!” >> $LogFile
;;
esac
fi
echo “——————————————-” >> $LogFile

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

卸载dropbox

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

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

用Dropbox恢复VPS资料

1、进行上面第一步和第二步后,就会自动在同步目录“Dropbox”里出现原先备份的档夹,注意,这不是软链结,这是同步过来的档。
2、稍等片刻,等同步完成后手工移动到你想要放置资料的目录,然后重新在同步目录建立一下软链结就好了。
注:过程实际上是先同步资料到同步目录里,转移档夹时在Dropbox伺服器上自动执行了删除操作,当建立软链结后,又开始同步Dropbox到伺服器上。如果想节约流量,那么可以先结束掉守护进程,再建立软链结,在Dropbox的网页操作介面上点击“回收站”那个图示,显示出已经删除的资料,右键选择“恢复”即可恢复回来,那么同步时只是对比,不会再上传。

Joker

这个人太懒什么东西都没留下

文章评论(0)