社外にバックアップしてみる


 結局、お隣のPC関連の保守を仕事として請け負うことになって、お金を貰うとなるとやる気も倍くらいは出てくるのであった。
 んで、ちゃんと色々聞いて状況を整理したのだが、バックアップがちょっと弱いかも、と判明。
 耐障害性を検討するに当たって、多重化した部分がまとめて死ぬケースとか、本質的に多重化してない部分とかを見落とさないようにするのは重要だ。RAIDで言うと、コントローラーが発狂するとか、電源がはっちゃけるとか、筐体ごと焼失するとか。実際、俺PCはそれで失敗したからな…。他にも、想定外の津波で発電機も燃料もまとめて喪失しましたー、なんてのは典型的だよな。システムを構成してる時は、備えたとこだけ見て「こんだけ備えてれば平気だろー」みたいな気分になるんだけどさ。もっと言うなら、「これだけ備えて破綻したなら許されるんじゃないか」という考えが生じたりもするし。でもそれじゃ意味無いよな。
 現状では、敷地の端と端で定時バックアップしていて、まあこれでも簡単に全滅はしないと思うし、別にこれでいいだろーと思っていた。が、割と適当に設置したこれらのファイルサーバには、いつの間にか重要なデータが積み上がっていたらしい。ファイルサイズもファイル数もえらいことになってるし、飛んだ時の損失予想とか聞いたらちょっと何というか。うへー、と。
 ハード的には安ーいNAS二台だから、片方壊れることはごく当たり前に想定される。それだけでバックアップの無い時間がしばらく発生するし、リストアの手順間違えただけでアウトじゃん。マイグレーション前に死亡というケースもあるよな。さっさと着手しないと怖すぎるな。
 物理的にもある程度離したいし、いっそ海外に置きたいくらいだが、とりあえずはOsukini LTが50GB以上余ってるからそこで試運転してみよう。

 で、コピー元のNASであるが、最初に導入したメインの奴がTeraStationなので、バックアップもLinkStationにしていた。今となっては不自由な気もするが、まーSambaがあれば何とでもなるだろう。
 と思ったが、SMBマウントはもうサポートされないようで、CIFSマウントだとファイル名の文字コード指定が出来ないらしい。むーん。TeraStationはCP932っぽいし、いつの間にか日本語ファイル名だらけで運用されてるしなー。CP932のまま処理するのも手かなあ、などとだらだらやっていたが、LinkStationの方は何故かUTF-8になっていた。どこで変換されてるんだろう。多分メルコNASのバックアップ機能に組み込まれてるんだろうけど。まあ動けば何でもいいか。
 という訳で、あとはシェルスクリプトでGPGでも掛けてscpすれば良かろう。この手順さえ固めれば、海外に置くのだって簡単だろうし。Googleドキュメントとかに置きたいなら別だけど。まー置きたいけどさー。

 NASをハックしてあればスクリプトも置けるのだろうけど、していないのでNP12に処理させることにする。
 まず、以前に作った簡単なバックアップスクリプトをベースに試作。tarファイル作ってgpgファイル作ってscp。うむ。scpはパスフレーズ無しの認証鍵セットを専用に作ってしまえば楽だな。一応動くのは分かったけど、バックアップのサイズがでかいから、一時ファイルを二個も作ると作業用ドライブの半分以上とか占有するんですが。
 ちょっとアレなので、tarとgpgをパイプで繋いでみる。成功。scpもパイプで繋がらないんかな、と思って調べると、標準入力からのコピーは出来ません、とのこと。cp系の決まり事なのかなあ。
 だがしかし、CUIのsshコマンドに妙な機能があった。例えば、

$ tar cpz test-dir | ssh test-host tar xpz

こうすると、接続元で実行しているtarの出力を接続先のtarにパイプした状態で実行される。ははは。こんな使い方あったんか。これは素晴らしいのではあるまいか。
 という訳で、

for dir in foo bar
do
  tar cp $dir | gpg $GPG_FLAGS | ssh -i 秘密鍵ファイル名 -l ユーザ名 ホスト名 cat \> コピー先ディレクトリ/$dir.tar.gpg
done

って感じで書いてみた。現物はもう少しごちゃっとしているが、考え方としてはこれでテンポラリ無しにtar+gpg+scp的なことが可能なようだ。恐らくは。ファイルがでかいせいで、これ書いてる間も遅々として進まないのである。何時間掛かるんだこれ。バックアップの衝突も怖いし、毎日掛けるのは厳しいかもなあ。

追記:
 と思ったら二時間で終わっていた。毎日でも行けるな。

(Visited 17 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください