2009年1月10日土曜日

mondo rescueでフルバックアップする。そしてリストア。

mondo rescueを使う

システムの入れ替えを出来るだけ手間をかけずにやろうとする場合、インストールマニアでなければ非常に手間である。
そこで、mondo rescueというシステムバックアップのソフトウェア群を使用し、システムのバックアップを取り、
システムを任意の(バックアップを取った時点)状態に手軽に戻せるようにする。

事前作業
出来ればシステム構築をし終わった時点でのバックアップが望ましい。
この手のバックアップツールは、現状ありのままを保存し、またそれを書き戻すので、
例えばsquidを入れて動かしていたサーバなどでは、
キャッシュを削除しておかなければ凄まじい大きさになってしまう(し、それを書き戻そうとは到底思えなくなる)。
なので、もしシステム構築後ではなく、走っているサーバをバックアップする際は、出来るだけスマートな状態に戻しておく。
例えば、/var以下の要らないファイルを削除しておく等。

ダウンロード
次に必要なファイルをダウンロードする。
参考URLは
http://www.thinkit.co.jp/free/article/0612/7/1/

各ディストリ宛にパッケージが配布されているので、そのパッケージを使うのが好ましい。
http://www.mondorescue.org/

上部メニューDownloadsに飛び、最下部Downloadsセクションにソースとパッケージが置いてある
執筆当時のパッケージは

Packages

* RedHat 7.3, 9.
* Fedora Core 4, Core 5, Core 6.
* RedHat Enterprise Linux 3, 4, 5.
* Mandriva 10.1, 10.2, 2006.0, 2007.0, 2007.1.
* OpenSuSE 10.0, 10.1, 10.2. Look also at this web page for SuSE details. Packman may have some useful additional packages.
* SuSE Linux Enterprise Server 9, 10.
* Debian 3.1, 4.0. Look also at this web page for Debian details.
* Ubuntu 6.04, 7.04.
* Gentoo 1.6.
* Slackware 10.2, 11.0.


バージョン部分がリンクになっているので、そこからパッケージをダウンロードする。
僕はCentOSのver.5.2のx86_64を使っているので、RedHat Enterprise Linuxの5からダウンロードした。

この中で必要なパッケージは
「afio」「buffer」「mindi」「mindi-busybox」「mondo」「mondo-doc」
の6点。
簡単なやり方は、ターミナル使っている場合は保存したい場所にディレクトリを作って移動し、
wget_パッケージのURL(半角アンダーバーはスペースに置換)でURLコピペで済ます。

当時は以下をダウンロード。
afio-2.4.7-1.x86_64.rpm
buffer-1.19-1.x86_64.rpm
mindi-2.0.4-1.rhel5.x86_64.rpm
mindi-busybox-1.7.3-1.rhel5.x86_64.rpm
mondo-2.2.7-1.rhel5.x86_64.rpm
mondo-doc-2.2.7-1.rhel5.noarch.rpm


他に、高速圧縮形式のlzoを使用するので、以下二点をダウンロード。
「lzo」
http://dag.wieers.com/rpm/packages/lzo/

「lzop」
http://dag.wieers.com/rpm/packages/lzop/

当時ダウンロードしたのは
lzo-1.08-4.2.el5.rf.x86_64.rpm
lzop-1.01-2.el5.rf.x86_64.rpm


また、ISOファイルを作る為に必要なmkisofsと、CDに書き込むために必要なcdrecordの二点を要求されるので、
これはyumでインストール。
yum install mkisofs
yum install cdrecord


現状で6つのrpmパッケージが同一ディレクトリに存在するので、まとめてインストール。
rpm -ivh *

エラーがあれば警告されるので素直に従うこと。

バックアップディレクトリ作成
バックアップ用のディレクトリを作成する。

取り敢えず/rootの中に、mondobackupというディレクトリを作成。
mkdir mondobackup


いよいよコマンド
コマンドを打つ。
mondoarchive -Oi -g -L -N -s 4200m -d /root/mondobackup -E /root/mondobackup


意味は
コマンド名 -ISOイメージを生成 -GUI操作(CUIでの疑似GUI) -lzo圧縮を利用 -ローカルディスクのみをバックアップ対象とする -ISOファイルのサイズ。いろいろな単位が使える -バックアップ場所 -バックアップ対象から除外する場所

何故バックアップ対象から外すコマンドが必要かという説明は不要の筈。
複数除外する場合は、シングルクォーテーション「''」で囲う。
例:
-E '/exit1 /root/exit2 /home/exit3'


実行すると、GUI画面が立ち上がり、バックアップが始まる。

出来たISOファイルは煮るなり焼くなりする。

----------------------------------------------------------------
復帰(リカバリ)する場合は、
焼いたDVDで起動させる。
テキストメニューが初めに出るが、気にせず待ち続けると、疑似GUIメニューになる。

取り敢えず覚えておきたいのはテキストメニューでのアクション。
nuke 自動的にハードディスクをフォーマットして、バックアップデータをリストアする
interactive リストア元などを対話的に指定する
expert コマンドモードで起動する
参考は
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a023mondorestore.html

以上が今回バックアップに使ったmondo rescue。
インストールするだけでかなりお手軽にフルバックアップできる。
何度もOSをインストールするのが面倒ならば、これは試す価値があるし、サーバのように構成が滅多に変わらない、
ウイルスやrootkitに犯された後の復帰を簡単にしたい場合は最高のツールと言っても言いと思う。


2011.11.03追記
Centos 6で入れたところ、
ダウンロードしたのは
afio-2.5-1.rhel6.x86_64.rpm
buffer-1.19-4.rhel.x86_64.rpm
lzo-2.04-1.el5.rf.x86_64.rpm
lzop-1.03-1.el5.rf.x86_64.rpm
mindi-2.0.7.8-1.rhel6.x86_64.rpm
mindi-busybox-1.18.3-3.rhel6.x86_64.rpm
mondo-2.2.9.7-1.rhel6.x86_64.rpm
だった。
↑2013.05.10どうもこれだとバックアップに失敗する。
 http://www.limemo.net/blog/2012/03/try-whole-backup-in-sakuravps-on-centos-by-mondo-rescue-02.html
を参考に、
Dagのリポジトリから入れると下記のようになる(全てx86_64)。
mondo 2.2.9.4-1.el6.rf
afio 2.5.1-1.el6.rf
buffer 1.19-2.el6.rf
mindi 2.0.7.5-1.el6.rf
mindi-busybox 1.7.3-1.el6.rf
syslinux 4.02-8.el6(base)

また、syslinuxをyumでインストールする必要があった。
yum install syslinux


afioとbufferは、ftp(ftp.mondorescue.org)からのダウンロード。
僕の環境ではブラウザでアクセスできなかったので、ftpクライアントを使用した。