Raspberry PiにRaspbianをインストールしてdebian小箱として使用を開始した訳だが、この小箱にはいくつかの役割を担わしたいと考えている。
1つはレンタルサーバー上のSQLやWebコンテンツのバックアップ用途である。レンタルサーバー上で稼働させられるプログラムには制限があるので、せいぜいtar.gz形式にまとめる位の事しか出来ない。FTPで手元に持って来てから処理させるのが最も手っ取り早いと感じている。もちろんプログラミングが出来る人なら、レンタルサーバー上からでもPerl等を使えば結構な事が出来るとは思うが、私はプログラマーでは無いので諦める。
さてRaspbianにはftpコマンドが入っていないのでaptでインストールしてftpコマンドが使用出来るようにした。これで某レンタルサーバーからFTPコマンドでファイルをgetして来ることが可能になった。但しRaspberry PiのSDカードには容量の制限もあるし、頻繁な書き込みは極力避けたいので最小限に留める配慮を忘れないようにする。
そこでレンタルサーバーからFTPで集めたバックアップファイルを、Dropboxへ同一ファイル名で日々上書きして行く方法を取りたいと考えた。Dropboxなら自動的に世代管理されるので、同一ファイル名で上書きすれば数世代のバックアップが可能と考える。後はRaspberry Pi(Raspbian)というコンパクトな環境に極力シンプルなファイル転送機能を組み込むだけ。
調べてみたところ、Dropboxへの一方的な書き込み用途や削除程度であれば、APIを使ってbashスクリプト程度で行うことが可能だと分かった。真っ当にdebianパッケージからdropboxをインストールすると無用なGUIに関係するパッケージまでインストールされるので避けたい。基本的にCUIでしか稼働させない考えなので、スクリプトで完結するならそれは願ったりかなったりである。
このスクリプトを使う方法は、設定ファイルも特に要らないので、別段難しいものでは無いのだが、まずはDropboxにブラウザでログインして、API
KEYとAPP SECRETを入手する必要がある。その2つの情報を使ってアプリケーション認証をする所が最大の課題になりそうだ。
但し、Dropboxの仕様変化やスクリプトの改修によって変化していると思われるのでその手順についてはここでは記さない。私が使った「Dropbox Uploader
v0.11.3」では初回のスクリプト実行時にAPIキーとAPPシークレットの入力を求めてきた。どこかに情報が記録されるらしく二度目は入力を求めてこない。
後はDropboxへ転送したいファイルを、シェルスクリプトとして記しておいて、それをcronで定期的に実行すれば、決まった周期でDropboxへのバックアップが出来上がる。
#!/bin/sh cd ~/backup_to_dropbox dropbox_uploader.sh upload maindata.tar.gz /server-backup/maindata.tar.gz dropbox_uploader.sh upload postgres.dmp.tar.gz /server-backup/postgres.dmp.tar.gz dropbox_uploader.sh upload mysql.dmp.tar.gz /server-backup/mysql.dmp.tar.gz dropbox_uploader.sh upload public_html.tar.gz /server-backup/public_html.tar.gz
たったこれだけの事だが、後はRaspberry Pi(Raspbian)が正常に稼働している限り、cronの設定に従ってDropboxへ4つのファイルを日々バックアップしてくれる。追加するファイルが増えたらこのファイルへ追記するだけでOKだ。メモリーやCPUリソースの消費量も少ない。
余談ながら、元々、DELLのエッジサーバー(Opteron Quad-Core)を常時稼働させていたのだが、夏場の発熱がえらく多い&消費電力の増加に閉口したのが苦い経験となっている。そこでメインサーバーはさくらVPSに追い出して、その代わりこういうった作業を常時稼働させられるそこそこの処理能力を持ったRaspberry
Piで行いたいというのが購入の目的の1つであった。まだ夏場を経験していないが、これだけ省電力なら猛暑の24時間稼働も問題無さそうである。(後は耐久性に若干不安は残る)
Raspberry Piに任せた仕事は、バックエンドでの自動処理ばかりなので、パフォーマンス的には全く問題なしと現状は考えている。後は長期的に運用&ジョブの追加に耐えられるかどうかだ。


コメント