« 2013年04月 | 過去ログ一覧 | 2013年07月 »

2013-06-24 (Mon)

さくらVPSのデータのフルバックアップにCopyを使ってみる

最近 Copy っていう Dropbox ぽい感じのオンラインストレージが出てきましたけど、なかなか盛大に容量を割り振ってくれるので さくらのVPS のバックアップデータを収めるのに使ってみることにしました。

これまでは Mondo Rescue っていうのを使って定期的にイメージを生成して、適当なタイミングでダウンロードっていう運用でした。Mondo Rescue で作ったイメージを使うと、管理画面からそのまま復元できるらしいのでお手軽です。万一消えた時に再構築する手間がほとんどかからないっぽい雰囲気でステキですね。

でまあ「適当にダウンロード」と書いた通りに不定期で手元にダウンロードする運用だからわりと期間が空くわけでバックアップとしては微妙なんです。なので、せっかく容量が豊富な Copy をゲットしたので頼ってみることにしました。

まだ登録してない方はここからどうぞ!!

15GBに加えて、紹介者と双方に5GBのボーナスもらえますので20GB使えます。Twitterとリンクすると、さらに2GBもらえます!すげえ!

* バックアップに挑戦

さて、実際のバックアップですが、Copy の信頼性がいまひとつわからないので暗号化したデータを転送するようにしました。

EncFS という暗号化ファイルシステムがあるので、それを使います。今回環境構築するにあたって以下のページを参考にしました。

バックアップの運用はこんな感じで考えています。

  • Copy の同期用ディレクトリは /drive/copy とする
  • EncFS のルートディレクトリは /drive/copy/encfs とする
  • 適当なところに上記ファイルシステムをマウントする → /mnt/encfs
  • /home 以下のデータを rsync して /mnt/encfs/home 以下と同期する (1日数回)
  • /home 以下を除いて Mondo Rescue でバックアップイメージを作成して /drive/mondo 以下に置く (1週間に1回程度)
  • /drive/mondo にできあがった ISO イメージを splite で分割して rsync で /mnt/encfs/mondo 以下と同期する

さくらでISOイメージを使って復元する場合、複数のイメージファイルは使えず、さらに5GBまでといったファイル制限があるという噂なので、/home とそれ以外とでバックアップを分けています。/home 以外は変更が少ないしそれほど重要でないのでこうしました。Copy では1つのファイルは1.5GBまでしか転送できないので、ISO イメージを作ったあとに分割します。

うちは Ubuntu で運用してるので、必要なものは APT で入りました。

$ aptitude install mondo encfs

Copy の Linux 版をダウンロードしてきたら、実行してみます。x86 ディレクトリにバイナリがあるので、それを使いました。

$ sudo mkdir -p /drive/copy
$ sudo ./CopyConsole -username=email@example.com -root=/drive/copy

多分パスワードを聞かれて同期が開始されることだと思います。適当なファイルを作って同期されるか確認してみましょう。ちなみにこれだとバックグラウンドで実行できないので、設定がうまくいったらデーモンモードで起動しましょう。

$ sudo ./CopyConsole -username=email@example.com -root=/drive/copy -daemon &

次は EncFS をセットアップします。ルートディレクトリ・マウントポイントの順で指定します。

$ sudo encfs /drive/copy/encfs/ /mnt/encfs/
ディレクトリ "/drive/copy/encfs/" が存在しません。作成しますか? (y,n) y
ディレクトリ "/mnt/encfs/" が存在しません。作成しますか? (y,n) y
新しい暗号化ボリュームを作成します。
Please choose from one of the following options:
 enter "x" for expert configuration mode,
 enter "p" for pre-configured paranoia mode,
 anything else, or an empty line will select standard mode.
?> 

Standard configuration selected.

設定が完了しました。以下のプロパティのファイルシステムが
作成されます:
ファイルシステム暗号アルゴリズム: "ssl/aes", バージョン 2:2:1
Filename encoding: "nameio/block", version 3:0:1
鍵サイズ: 192 ビット
Block Size: 1024 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File holes passed through to ciphertext.

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism.  However, the password can be changed
later using encfsctl.

新しい Encfs パスワード: 
Encfs パスワードの確認: 

適当なファイルを作ってみると、/drive/copy/encfs 内に自動的に暗号化されたファイルが生成されます。/drive/copy 以下は Copy の同期ディレクトリになっているので、自動的にサーバに転送されますね。これで準備完了です。

$ sudo touch /mnt/encfs/IhaveApen
$ ls /drive/copy/encfs/
.encfs6.xml  EI33ZIyxOCbSJ6cKmOizrWWg

ここまできたらあとはまあ適当なスクリプトなりなんなりを書いて、/mnt/encfs にファイルを突っ込むだけです。ホームディレクトリはこんな感じにしています。

#! /bin/sh

if [ -x "/mnt/encfs/home" ]
then
   rsync -pa --delete /home /mnt/encfs
fi

Mondo Rescue はこんな感じにしました。

#! /bin/sh

BKDIR=/drive/mondo
SyncDIR=/mnt/encfs

if ! [ -x "$SyncDIR/mondo" ]
then
   exit
fi

rm -f ${BKDIR}/*
mkdir -p $BKDIR
mondoarchive -Oi -L -N -s 4200m -S /tmp -d $BKDIR -E "/drive /home /mnt"

cd $BKDIR
split --bytes 800m mondorescue-1.iso

rsync -pa --exclude '*.iso' --delete $BKDIR $SyncDIR

データベース使ってる場合は、ダンプしたデータを /mnt/encfs 以下に定期的に出力するとより安心かもしれないですね。

△トップ | コメント (0) | トラックバック(0)

 
Copyright (C) Kyosuke Takayama, Some rights reserved.