Dropbox + Ubuntu 10.04 で特定のディレクトリのみを同期する
あるクライアントで Dropbox を使用して dotfiles ディレクトリを同期したいけど、必要のないディレクトリまで同期するのは嫌だなー、という事で調べてみたらありました。 Dropbox の exclude オプションを使用して、同期しないディレクトリを指定して、同期から除外する方法です。
環境: Ubuntu 10.04(Desktop/Server)64bit Dropbox Forum Build 0.8.112
現行の安定バージョンに exclude オプションはあるにはあるのですが、いざ使おうとすると「このバージョンじゃサポートしてないよ」と怒られてしまいます。
そこで、Forum Build を使用します。いわゆる開発バージョンです。 現時点での最新バージョンである、0.8.112 を使用します。 開発バージョンの使用は自己責任でお願いします。
(10/27) - Latest Forum Build - 0.8.112 « Dropbox Forums http://forums.dropbox.com/topic.php?id=26578&replies=133
既に Dropbox をインストールしているのであれば、「初めて Dropbox をインストールする場合」は飛ばして、「Forum Build のインストール」をご覧ください。
初めて Dropbox をインストールする場合
パッケージのダウンロード 64bit なので Ubuntu (x86_64 .deb) のパッケージをダウンロードします。
参考:Dropbox - Downloading Dropbox - Online backup, file sync and sharing made easy. https://www.dropbox.com/downloading?os=lnx
# パッケージをダウンロードし、強制的にインストール
$ wget https://www.dropbox.com/download?dl=packages/nautilus-dropbox_0.6.4_amd64.deb
$ sudo dpkg --force-depends -i nautilus-dropbox_0.6.4_amd64.deb
# Dropbox を起動。y キーを押すと、必要なファイルがダウンロードされる
$ dropbox start -i
Starting Dropbox...
Dropbox is the easiest way to share and store your files online. Want to learn more? Head to http://www.dropbox.com/
In order to use Dropbox, you must download the proprietary daemon. [y/n] y
$ dropbox stop
Dropbox を紐付ける Dropbox を使用するクライアントと Dropbox のアカウントを紐付けます。
参考:dropboxd didn't give me a link URL! - TipsAndTricks/TextBasedLinuxInstall - Dropbox Wiki http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall#dropboxddidn.27tgivemealinkURL.21
# dbreadconfig.py をダウンロード
$ wget http://dl.dropbox.com/u/8709885/dbreadconfig.py
$ python dbreadconfig.py
紐付けるための URL が生成されるので、Web が閲覧できる環境でアクセスする。 (必ずしも Dropbox をインストールする環境からアクセスする必要はありません)
Dropbox 用のディレクトリを作成
$ mkdir ~/Dropbox
$ dropbox start
サーバーとの同期が始まるので、しばらく待ちましょう。 dropbox status コマンドで同期が終了(Idle)になった事を確認したら、次のステップに進んでください。
起動スクリプトの作成 起動スクリプトは以下のサイトからコピペします。 DROPBOX_USERS の内容は適宜変更してください。
参考:TipsAndTricks/TextBasedLinuxInstall/UbuntuStartup - Dropbox Wiki http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall/UbuntuStartup
# 起動スクリプトの作成
$ sudo vim /etc/init.d/dropbox
#dropbox service
DROPBOX_USERS="user1 user2"
DAEMON=.dropbox-dist/dropbox
start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}
stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}
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
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
# システム起動時に起動するようにする
$ sudo chmod +x /etc/init.d/dropbox
$ sudo update-rc.d dropbox defaults
Forum Build のインストール
適当なディレクトリにダウンロードして解凍します。
$ wget http://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-0.8.112.tar.gz
$ tar zxvf dropbox-lnx.x86_64-0.8.112.tar.gz
解凍すると、.dropbox-dist というディレクトリが生成されます。
# dropbox の停止
$ dropbox stop
# ホームディレクトリに .dropbox-dist というディレクトリがあるので、
# 適当なディレクトリに退避させておく。
$ la ~ | grep "dropbox"
.dropbox/
.dropbox-dist/
$ mv ~/.dropbox-dist ~/backup
# 解凍しておいた Forum Build の .dropbox-dist ディレクトリを、
# ホームディレクトリにコピーする。
$ mv ~/temp/.dropbox-dist ~/
# Dropbox の起動
$ dropbox start
同期し直しているのか、キャッシュを再生成しているのか、しばらく処理が走る事があるので、落ち着くまで待ってあげましょう。 これで除外設定が有効になっているはずです。
除外設定
除外リストに何もない時
$ dropbox exclude
No directories are being ignored.
除外リストに追加 絶対パスで指定してください。
$ dropbox exclude add ~/Dropbox/Document/
Excluded:
Dropbox/document
複数追加することもできる
$ dropbox exclude add ~/Dropbox/Public ~/Dropbox/Photos
Excluded:
Dropbox/public
Dropbox/photos
ファイルを追加することもできるみたい
$ dropbox exclude add ~/Dropbox/todo.txt
Excluded:
todo.txt
除外リストの表示
$ dropbox exclude
Excluded:
Dropbox/document
Dropbox/photos
Dropbox/public
Dropbox/todo.txt
除外リストから削除する
$ dropbox exclude remove ~/Dropbox/document ~/Dropbox/photos ~/Dropbox/public
No longer excluded:
Dropbox/Public
Dropbox/Photos
Dropbox/Document
ヘルプ
$ dropbox exclude help
ignores/excludes a directory from syncing
dropbox exclude ```list
dropbox exclude add [DIRECTORY] [DIRECTORY] ...
dropbox exclude remove [DIRECTORY] [DIRECTORY] ...
"list" prints a list of directories currently excluded from syncing.
"add" adds one or more directories to the exclusion list, then resynchronizes Dropbox.
"remove" removes one or more directories from the exclusion list, then resynchronizes Dropbox.
With no arguments, executes "list".
Any specified path must be within Dropbox.
Dropbox 便利ですね。