Dropboxにバックアップデータを投げつける

今日、Libserverの設置場所を移動させていた。

それで少し接続できない時間帯があったかもしれない。

その作業中に父といろいろ言ってたわけだが、登録しといて長いこと放置してたサービスのことを思い出した。

そのサービスの名前をDropboxという。


Dropboxというのはオンラインストレージサービスのことですね。

無料でも2GBものストレージを使うことが出来る。

それだけで十分ありがたいものだと思うが、実は人を紹介することに250MBの容量をもらうことができる。

まぁ無制限に増やせるわけじゃなくて最大8GBまでなんだけどね。

実はDropboxに登録した理由もそこにありまして、友人より頼まれて登録したと。

ただ、使い道ねーなと放置していた。当時はまだ研究室に配属されてなかったはずなのでそりゃ大した使い道もないと。

そして忘れ去られていた。

後に研究室に配属されて、データの往来も激しくなってたのだが、

移動にはZENのストレージ機能を使ったり、IMAPで下書きに添付ファイルを保存するとかしてた。

前者はともかく後者は取扱もあまりよくないし、この時点でDropboxを思い出してれば便利だったろうに。


さて、今回ここで思い出した理由ですが、サーバーのHDDのバックアップ取らんのかいという話があって、

Blogの記事ぐらいバックアップ取りたいけど手動でバックアップ取るのめんどくさいなぁと思った。

かといって自動化しようにもバックアップ先が自分のPCだといつ立ち上がってるか知らんからやりようがない。

ここで、それとは別にオンラインストレージが便利だねみたいな話があって、

そうかDropboxにバックアップ取ればいいなとなったわけだ。

Blogの記事はテキストだから、せいぜい数MBで済む。

バックアップ先はいつでもオンラインで使えるんだから、自動でcrondでバックアップを送りつけることも問題ない。


Dropboxはフォルダを自動同期させて使うのが普通の使い方である。

しかしバックアップデータを送りつけるために自動同期なんていらん。

設定もめんどくさいしただ送りつけるだけでいいのにと思って調べてみた。

そしたらPythonなどでアップロードするためのライブラリがあることが分かった。

Dropbox Addons / Python Dropbox Uploader (Dropbox)


ライブラリのインストール方法ですが、githubからダウンロードして、dbuploadフォルダを/usr/lib/python2.4/とかにコピー。

そしてこのライブラリ内で利用されているMechanizeというスクレイピング用のライブラリを入れる。

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install mechanize

これでインストール完了。サンプルのコードで試してみるといいけどちゃんと動くはず。


それで作ったスクリプト。

#!/usr/bin/python
import subprocess
import os
output="/home/hidemaro/blogbackup.gz"
subprocess.call("php bkup.php_ 2>/dev/null | gzip -c > %s" % output,shell=True)
if os.path.getsize(output)<1000:
  print "Output Error!"
else:
  from dbupload import upload_file
  upload_file(output,"/Libserver","blogbackup.gz","**@***","******")

バックアップを書き出すスクリプトを作りまして、これを実行させて出力をgzipで圧縮して適当なファイルに書き出す。

そして、それをこのライブラリでアップロードすると。ログイン情報はここに書く。

これで実行すればLibserverというディレクトリにblogbackup.gzという名前でアップロードされる。


あともちろん自宅と研究室のデータの往来にも使いますよ。

レポートとか投げ込んどいた。

それとおもしろいのはDropboxはブラウザからも使うことが出来て、クライアントがなくても大丈夫。

実はさっきのPythonのアップロード用のライブラリもそれを利用している。だからMechanizeがいるんですね。

なので共有PCでデータを読み書きしたい時はそれが便利そうですね。