Plone 3 バックアップ ~ Zope まるごとバックアップ ~

Plone 3 のバックアップ方法をおさらいしてみます。

バックアップの前提

Plone は 色々なものが絡み合って稼動しています。Python, Zope, OS・・・などなど、今のままの環境をそのままバックアップしたいなら、HDDをまるごと保存するのが正解でしょう。もちろん重要度の高いサーバでは RAID を組んだりして、「システムまるごと」バックアップできる体制は別途組まれていることと思います。

では、いったい何をバックアップとしてとっておくべきか?ここでは Zope DB をバックアップしておく方法を紹介していますが、データをバックアップしていても、そのデータがどんな環境で使われていたか、しっかり記録を残しておくことが重要です。

  • Plone のバージョン
  • Zope のバージョン
  • Python のバージョン
  • アドオンプロダクトを使用していれば、各アドオンのバージョン

サーバを停止できる環境なら

Plone は Zope 上の1インスタンスとして Zope DB にそのデータが格納されています。もしバックアップのためにサーバを停止できるのであれば、そのデータをまるごとバックアップするのはいたって簡単。var/filestorage/Data.fs をコピーしてどこかに保存しておくだけでOKです。Data.fs と一緒に .lock や .index, .tmp も作られていることがありますが Data.fs だけコピーすれば良いそうです。 .lock などのファイルは Zope が Data.fs から再作成してくれます。

Repozo コマンドを使う

Ploneをインストールすると、バックアップを作成してくれる repozo コマンドも使えるようになっているはずです。このコマンドを使うとPlone を停止することなく、バックアップを作成することができます。

sudo [plone-installed-dir]/zinstance/bin/repozo -B -z -F -f [plone-installed-dir]/zinstance/var/filestorage/Data.fs -r [diretory-where-it-makes-backupfiles]

-B オプション:バックアップを作成します(必須)
-z オプション:結果をgzip に圧縮します
-F オプション:フルバックアップ
-f オプション:バックアップ対象のソースファイル名
-r オプション:出力先ディレクトリ(必須) ※事前にディレクトリを作成しておくこと

これで .dat ファイルと .fsz ファイルが生成されます。もし既に作成したバックアップがある場合は -F オプションをつけないと差分のバックアップが作成されます。差分バックアップはrsyncのような差分チェックがはいるので生成にそれなりの時間を要します。

生成されるファイルは yyyy-mm-dd–hh-mi-ss.dat / .fsz の形式で日時がファイル名になります。

python のバージョンに注意

コマンド時に注意したいのは、repozo 自身が python で動くので、実行時に使われる Python のバージョンです。OS に python がインストールされている時は、パスが通っている python のバージョンが自動的に使われてしまうので、これを強制的に Plone 本体の Python バージョンで実行するようにしてください。

パスが通っている python のバージョンを調べるには次のコマンド。

python -V

MacOSでは以前は気軽に python_select で使う python のバージョンを切り替えできましたが、最近そのコマンドが排除されてしまったので、ガッカリです。

確実に対象の Plone に python バージョンをあわせるなら、Plone インストーラで一緒にインストールされた Python のディレクトリでコマンドをすればOKです。

cd [plone-installed-dir]/Python-x.x/bin
sudo ./python ../../zinstance/bin/reposo ・・・(オプション略)

repozoバックアップデータをリストアする

作成したバックアップをリストアするときも repozo コマンドを使う。

sudo [plone-installed-dir]/zinstance/bin/repozo -R -r [directory-where-backupfiles-are-saved] -D yyyy-mm-dd-hh-mi-ss -o [plone-installed-dir]/zinstance/var/filestorage/Data.fs

-R オプション:バックアップデータをリストアします(必須)
-r オプション:バックアップデータがある場所
-Dオプション:複数のバックアップデータがある場合にリストアしたいデータのバックアップ日時(=ファイル名)を指定(指定しないと最新のファイルが対象になります)
-oオプション:上書きするリストア先のデータファイル名