Dropboxを使った.emacs等の設定ファイルの管理

メインで使っているubuntuの設定ファイル類を、他の環境で使っているいくつかのubuntuに持って行く為にDropboxを利用する事にした。
これまでDropboxUSBメモリ代わりにしか使ってなかったのだけど、なんとなく.emacsや.zshrc等の設定ファイル類をDropbox配下に置いて、それらをホーム直下にシンボリックをはってやると普通に有効となった。
同じ事を他のマシンでもやると設定ファイルを一元化できそうだ。


さっそく実行に移すことに。まずはDropboxのインストール。
Ubuntu8.10にDropboxををインストールする為に以下の2つのリポジトリを追加する。

deb http://linux.getdropbox.com/ubuntu intrepid main
deb-src http://linux.getdropbox.com/ubuntu intrepid main

Synapticパッケージマネージャから追加する場合は、
メニューの設定>リポジトリサードパーティのソフトウェアタブから追加をクリックし入力ボックスに一行をそのまま貼り付ける。


直接行う場合は/etc/apt/sources.list にそれぞれ追加し、apt-get update で更新する。


追加したら nautilus-dropbox をインストール。
aptitude install nautilus-dropbox


インストール後はnautilusの再起動が必要。
killall nautilus


タスクトレイにnautilusのアイコンが出てきて、自動でダウンロードが始まる。
ダウンロード率が100%になるとウインドウが立ち上りし、アカウントを設定して完了。


Dorpboxのファイルの同期が完了したら元の設定ファイル類を待避させて、Dropbox上の設定ファイルにシンボリックリンクをはってやるわけだが、その作業をシェルスクリプトで自動化してみた。


まずDropbox以下に適当なディレクトリを作って.emacs等の設定ファイルを一カ所に纏める。
次に以下のスクリプトを同ディレクトリに保存する。

#!/bin/sh


repo=$(cd $(dirname $0) && pwd)
#target=".emacs .emacs.d .vimrc .zshrc .zshenv .screenrc .Xmodmap .fonts"
target=`ls -a $repo|grep "^\.[^.]"`

if [ ! -e ~/.org ];then
  mkdir ~/.org
fi

for i in $target;
do
  if [ -e ~/$i ];then
    mv ~/$i ~/.org/
  fi

  if [ -e $repo/$i ];then
    ln -s $repo/$i ~/$i
  fi
done

あとは設定ファイルを同期したいPCで保存したスクリプトを実行すると、スクリプトのあるディレクトリ内のdotで始まるファイル全てのシンボリックリンクをホームディレクトリ直下に作成してくれる。
この時、ホームディレクトリに既に同名のファイルがあった場合はホームディレクトリ/.org/ 以下にバックアップをとってからシンボリックリンクを作成する。


$(cd $(dirname $0) && pwd)
の記述で実行時に絶対パスを取得するので設定ファイルの置き場所はDropbox内のどこでも良い。


実際にやってみるとすごく便利だった。今まで設定ファイルはgoogle notebookを使って管理していたけど、これで管理から解放されそうだ。
FireFoxThunderBirdもポータブル版を使ってdropboxから直接起動するようにしたら便利そうだなぁ。