2010年10月3日 星期日

讓Dropbox可以在linux下同步備份資料

讓Dropbox可以在 linux或是虛擬主機下同步備份資料,如果是虛擬主機的話,要確認可以ssh登入以及下載執行程式才行。


上一篇介紹了Dropbox 16G網路硬碟的帳號申請,還沒有申請的人可以看這篇

參考 How To Install Dropbox In An Entirely Text Based Linux Environment
提到如何在純文字模式下安裝設定Dropbox

需求如下
At least version 2.4 of the C library
wget
Python 2.5
a web browser


簡易安裝流程

下載執行檔,程式都已經編譯好了,原則上就是解開執行

32位元作業系統
wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86

64位元作業系統
wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86_64




TAR開

tar -zxvf dropbox.tar.gz


移動到家目錄,若已下載與解壓縮在家目錄可以省略這一步驟

mv .dropbox-dist ~


第一次執行,會給一個連結網址,用任何一台電腦的瀏覽器貼上連結網址以便把帳號與主機做連結。

~/.dropbox-dist/dropboxd

第一次執行,複製所給的連結網址,之後ctrl +c 先結束掉這個程序,找一台可以上網的電腦,開啟瀏覽器,貼上網址,做帳號結的動作。


檢查帳號已經連結,就可以讓他背景執行

~/.dropbox-dist/dropboxd &


把想要備份的目錄製作一個連結到家目錄下的Dropbox

mkdir ~/Dropbox/webbkdir


然後用mount --bind 把要同步備份的目錄以及Dropbox下的備份目錄做連結,這樣做的好處是不需要使用cp -r指令複製檔案,也不用費心移動Dropbox目錄,而且你或是你的網站其他管理者對網站所做的更動是會馬上上傳到Dropbox的喔

語法 mount --bind 所要同步的目錄 要連結到dropbox的目錄
左邊要目錄名+斜線,右邊的不用斜線

mount --bind /mnt/web_root/album_file/photos/ /root/Dropbox/webbkdir

上面這一條也可以寫到/etc/rc.local檔案中,讓他開機就自動連結

若需要取消執行程式

killall dropbox


如果要要更進一步當成系統服務,一開機執行,這裡有相關資訊,需要在
/etc/init.d/下編寫dropbox服務以及/etc/syslinux/下寫下使用者參數設定,不過若主機為虛擬主機,可能就只有手動執行一途。

2010/10/04 補充-
上面設定為系統服務的教學,文章提到新增 /etc/init.d/dropbox 檔案,但是原來的語法,會造成root使用者不能啟動dropbox服務,順手修改如下紅字部分



# chkconfig: 345 85 15
# description: Startup script for dropbox daemon
#
# processname: dropboxd
# pidfile: /var/run/dropbox.pid
# config: /etc/sysconfig/dropbox
#

### BEGIN INIT INFO
# Provides: dropboxd
# Required-Start: $local_fs $network $syslog
# Required-Stop: $local_fs $syslog
# Should-Start: $syslog
# Should-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start up the Dropbox file syncing daemon
# Description: Dropbox is a filesyncing sevice provided by dropbox.com
# This service starts up the dropbox daemon.
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

# To configure, add line with DROPBOX_USERS="user1 user2" to /etc/sysconfig/dropbox
# Probably should use a dropbox group in /etc/groups instead.

[ -f /etc/sysconfig/dropbox ] && . /etc/sysconfig/dropbox
prog=dropboxd
lockfile=${LOCKFILE-/var/lock/subsys/$prog}
config=${CONFIG-/etc/sysconfig/dropbox}
RETVAL=0

start() {
echo -n $"Starting $prog"
if [ -z $DROPBOX_USERS ] ; then
echo -n ": unconfigured: $config"
echo_failure
echo
rm -f ${lockfile} ${pidfile}
RETURN=6
return $RETVAL
fi
for dbuser in $DROPBOX_USERS; do
daemon --user $dbuser /bin/sh -c "~/.dropbox-dist/dropboxd&"
done
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}

status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}

stop() {
echo -n $"Stopping $prog"
for dbuser in $DROPBOX_USERS; do
killproc /home/$dbuser/.dropbox-dist/dropbox
done
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

# See how we were called.
case "$1" in
start)
start
;;
status)
status
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|status|stop|restart}"
RETVAL=3
esac
exit $RETVAL

0 意見:

張貼留言

留言........