SubversionレポジトリをGmailにバックアップするrubyスクリプトGSVN-dump

を作った。ソースは自分から人に見せたがるほど綺麗なものでもないので、ここには書かない。

GSVN-dumpは、「ゴスヴンダンプ」と読むべきかもしれません。ジーエスヴイエヌだと言いにくいし。

GSVN-dump動作の流れ

  1. gsvn dump --gmail とかユーザーがコマンドを叩く
  2. svnadmin dump -r0:HEAD > gsvndump.yyyymmddHHMMDD が実行される
  3. gzip -9 gsvndump.yyyymmddHHMMDD が実行される
  4. gsvndump.yyyymmddHHMMDD.gzのファイルサイズが大きすぎたら、splitで分割
  5. メールに添付して、@gmail.comに送る

こうやって見ると、既存のツールをただ使っているだけであることがわかる。

GSVN-dumpのファイルが送られてきた図

GSVN
分割されたファイルは、1つのスレッドとしてGmailが勝手にまとめてくれるように、Subjectを設定してある。

そのほか、GSVN-dumpができること

  • --smtp オプションで任意のSMTPサーバーを使って送信できる。SMTP認証はまだできない。
  • --email オプションでGmailに限らず任意のメールアドレスに送ることができる。--gmailオプションと同時に指定したら、--emailは無視される
  • --bytes オプションで、何バイトごとにファイルを分割するか指定できる。SMTPサーバーに併せて設定されたし。

できるようになる(予定の)こと

  • インクリメンタルなバックアップ。これは必ず実装される。
  • cronに便利な何か

さんくすto

メールの送信にかかる部分は、このサイトにあるsamailからパクらせていただきました。何通も送る必要があるため*1、クラスに押し込めたりしたので、再利用性は少し高くなりました。

samailはGPL2とBSDのデュアルライセンスらしいので、GSVN-dumpもGPL2とBSDのデュアルライセンスになるのか?BSDライセンスって内容シラネ。

*1:ファイルを分割する場合