dropbox-api をシェルスクリプトとcronで使う
前のメモにも記録したが、FreeBSDの dropbox-api はMac、Windows、LinuxなどのGUIとは異なり、すべて手動で同期するフォルダーや同期の方法をコマンドで発行する必要がある。
さすがにこれだといつも手軽に使うというわけには行かないので、FreeBSDファイルシステムのホームディレクトリ以下に「Dropbox」というディレクトリを作成し、この中身とDropboxサーバー上のコンテンツを自動で同期するためのスクリプトを書いてみた。
GUI用のDropboxと同じことをするのは全く無理な話で、そうする必要もない。私の場合はDropboxサーバーの内容をFreeBSDのユーザーホームディレクトリ以下にミラーリング出来るだけでかなり満足出来る。というのはGUIであれば、日本語ファイル名を使用出来るのだが、Terminal画面のコマンドラインから日本語ファイル名入力をするのは骨が折れるためで、日本語ファイルをコピー出来るだけで便利に感じるし、別の住所に置かれているFreeBSDサーバーのコンテンツメンテナンスにも便利だ。
そして、Dropboxのコンテンツを、FreeBSDにダウンロードするためのスクリプトを書いてみたのが以下。
<dbox_sync.csh> #!/bin/tcsh setenv LANG ja_JP.UTF-8 set working_dir="/home/dropuser/Dropbox" set dbox_src="dropbox:/" set dbox_dest="~/Dropbox/" set runflag=`ps ax | grep "dropbox-api" |grep -v "grep" | wc -l` cd $working_dir if ( $runflag == 0) then dropbox-api sync $dbox_src $dbox_dest -vd else echo "Another dropbox-api is already runnning." endif
これを、~/bin に実行権を与えて保存しておけばいいわけだ。(あらかじめ$HOME/Dropbox を作っておくことと、dropbox-api setup が終了していること。)
このコマンドを、crontab に時間指定して記述しておけば、指定時にDropboxとの同期が行われる。
0 23 * * * /home/dropuser/bin/dbox_sync.csh
これで、毎日 23時になると同期が行われ、FreeBSDの場合は、同期が終了するとメールが届く。
もし、1時間おきとか、10分おきに同期したいなら、crontab を書き換えて、
0/10 * * * * /home/dropuser/bin/dbox_sync.csh #10分おきに 0 * * * * /home/dropuser/bin/dbox_sync.csh #毎時0分に 0/30 8-20 * * * /home/dropuser/bin/dbox_sync.csh #8時から20時の間の30分毎に
のようにすれば良さそうだ。(結果報告メールがどっさり届きそうだが。)実行時間間隔が短いと、同期すべきDropbox上のファイルが巨大だった場合に一度目のcronの処理が終わる前に次の実行時間が来てしまう可能性もあるので、時間間隔はよく考えて決めるべき。
現時点では必要ないが、ローカルファイルシステムの内容をDropbox側へアップロードしたい場合は、$dbox_src と $dbox_dest を入れ替えればいいはず。
問題点は、相変わらず Proxy サーバーの設定方法がわからないこと。環境変数に、http_proxy や HTTP_PROXY、https_proxy などを設定してみたのだけど、Proxyが有効にならない。この点は今後も調査が必要だ。