Categories: Linux筆記

Centos使用DropBox定時同步備份方案詳解

Dropbox 是一個提供同步本地檔的網路存儲線上應用。支援在多台電腦多種操作中自動同步。
1.安裝Dropbox linux用戶端
官方簡易教程:點擊我前往
ssh登陸,在root目錄下輸入以下命令,視版本不同而選擇:(注:code中已包含cd到root根目錄的命令,而且只有在root根目錄下後續步驟才能生效)
32-bit:
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-bit:
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*
下載後已自動解壓,不需要再執行解壓命令。
2.Dropbox與機器綁定
執行以下命令:
~/.dropbox-dist/dropboxd &
第一次執行會生成“host_id”,這機器與Dropbox進行綁定的唯一字串,提示的資訊是一個鏈結,而且會重複滾動出現直到綁定完成。複製這個鏈結在流覽器裏訪問,輸入Dropbox帳戶和密碼就可以了,輸入後會自動跳轉到Dropbox主介面並且會有綁定成功的提示,此時在ssh用戶端裏也會有提示並且停止滾動,再按任意鍵就完成綁定。
(注:官方的運行命令結尾沒有“&”這個符號,在centos下運行會出現ssh凍結無反應的情況,據稱Debian也會。實際上守護進程已經在運行了。)
 3.建立目錄軟鏈結
在root目錄下生成的“Dropbox”檔夾(linux檔夾名稱區分大小寫的),就是Windows裏叫做“同步目錄”的檔夾,只要把檔放置在裏面就會同步。在未同步之前,裏面有一個檔夾“.dropbox.cache”和一個檔“.dropbox”。當然我們不可能把網站放置到這裏,因此我們需要在裏面建立軟鏈結就行了,使用ln命令建立軟鏈結(軟鏈結其實就是windows裏的快捷方式),格式是:ln –s 原始檔案 目標檔,我可以先進入“Dropbox”檔夾,免去每次都需要輸入目標檔的麻煩。過程如下:
cd ~/Dropbox
ln -s /home/wwwroot
釋義:進入“Dropbox”文件夾,建立/home/wwwroot/ 檔夾的軟鏈結。運行這兩個命令後會在“Dropbox”檔夾下生成一個名為“wwwroot”的軟鏈結。如果網站放在不同地方的話,那麼就建立多個軟鏈結就好。
4.運行同步守護進程
輸入以下命令,這個命令就是之前綁定“host_id”的那個命令。
~/.dropbox-dist/dropboxd &
運行此命令後,視資料大小和網路環境而定,反正美帝的VPS同步都很快,會在流覽器裏的Dropbox檔管理介面裏看到同步的檔夾。同時,在“Events(活動)”裏看到同步記錄,記錄裏有檔數量和檔夾數量,機器與Dropbox帳戶的綁定日誌也會記錄在裏面,這個其實就是Dropbox的帳戶活動記錄。
5.定時同步,節約記憶體資源
運行守護進程是要佔用一定記憶體的,為了節約這部分記憶體,可以通過定時運行腳本來控制。過程如下。
在第三步是進入了“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編輯器。
6.同步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
保存好腳本後別忘了加上可執行許可權,你也可以定時運行,執行後自動在同步目錄裏生成備份,守護進程運行後則自動同步了。
7.卸載dropbox
停止守護進程,刪除目錄就好了。分別執行以下命令:
killall dropbox
rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py
8.用Dropbox恢復VPS資料
1、進行上面第一步和第二步後,就會自動在同步目錄“Dropbox”裏出現原先備份的檔夾,注意,這不是軟鏈結,這是同步過來的檔。
2、稍等片刻,等同步完成後手工移動到你想要放置資料的目錄,然後重新在同步目錄建立一下軟鏈結就好了。
注:過程實際上是先同步資料到同步目錄裏,轉移檔夾時在Dropbox伺服器上自動執行了刪除操作,當建立軟鏈結後,又開始同步Dropbox到伺服器上。如果想節約流量,那麼可以先結束掉守護進程,再建立軟鏈結,在Dropbox的網頁操作介面上點擊“回收站”那個圖示,顯示出已經刪除的資料,右鍵選擇“恢復”即可恢復回來,那麼同步時只是對比,不會再上傳。

yan

Share
Published by
yan