2013年8月1日木曜日

Linuxシステム全体をイメージファイルにバックアップする

実家にちょっと特殊に作り込んだLinuxサーバを構築したのですが
万が一システムが吹っ飛んだりしたらものすごく苦労したので目も当てられません。
なので、システム全体をバックアップして万が一に備えたいと思います。

バックアップの種類は色々あると思いますが、今回はOSそのものをイメージファイル
形式にバックアップできるソフトウェアという条件で探しました。

もともとpartcloneというツールを使ったことがあったのですが、このツールだと
マウント済みのシステムはバックアップが取れないので、ssh経由でバックアップする
とかが出来ず、USBメモリからLiveシステムを起動してバックアップしてと
物理的に手間がかかります。

今回使ってみたのが mondo rescue というツール。
以下手順。(検証はUbuntu 12.04 LTS版 32bitで行いました。)

すんなりapt-getで入らないので、下記コマンドを実行してインストールします。

$ cd /etc/apt/sources.list.d/
$ sudo wget ftp://ftp.mondorescue.org/ubuntu/12.04/mondorescue.sources.list
$ sudo apt-get update
$ sudo apt-get -y install mondo
マニュアルを読みたい場合は下記で。

$ man mondoarchive
日本語の情報ではこちらのサイトが非常によくまとまっておりました。

http://www.asahi-net.or.jp/~aa4t-nngk/mondo.html
ただし、情報が古いのかわからないのですが、特定ディレクトリを除外するオプション
である「-E」オプションの使い方がちょっと最新のmondoだと違うっぽいです。
manを見て気付きましたが、上記サイトには

# mondoarchive -E "/some/path /another/path"
といった形でダブルクォートで全体を囲みつつディレクトリはスペースで区切ると書いてありますが
manによると
# mondoarchive -E "/some/path|/another/path"
のように、「|」(パイプ)で区切るのが正しいようです。
私の場合、下記コマンドでバックアップしてみました。
$ sudo mondoarchive -Oi -L -d /mnt/500g/backup/mondo/ -6 -S /var/mondo/scratch/ -T /var/mondo/tmp/ -E "/var/data|/mnt" -s 44800m
一応採用したオプションの意味を書きますと -Oi → ISOイメージ形式にバックアップする
-L → LZO形式に圧縮する(gzipやbz2より良いと個人的に思っている為)
-d → どのディレクトリにバックアップするか
-6 → 圧縮レベル(0で無圧縮、9で最高圧縮です。)
-S → scratch作業用ディレクトリ(適当な空ディレクトリ指定で良いようです)
-T → tmpディレクトリ(適当な空ディレクトリ指定で良いようです)
-E → バックアップから除外するディレクトリの指定(/var/data/ と /mnt/ を除外しました。)
-s → 出来上がるISOファイルの最大サイズ。このサイズを超えると分割されます。1ファイルにまとめたかったので適当に40GB程を指定して分割されないようにしています。
バックアップが終わったファイルは3.5GBになりました。
バックアップ対象は6.2GBなので半分よりちょっと大きいサイズになったという感じでしょうか。
-6指定を-9指定にすればもっと小さくなるでしょうが時間かかりそうなのでやめておきます。

まだリストアの検証はしていませんが、もしリストアする機会がありましたらまた記事書くかもです。
※業務で使うならちゃんとリストア検証もしておきましょう・・w

-- 追記 --
mindi パッケージが「認証されていません。検証なしにインストールしますか?」といった
警告が出てきてしまいますので、下記コマンドを実行しておきましょう。

$ wget ftp://ftp.mondorescue.org/ubuntu/12.04/mondorescue.pubkey -O - | sudo apt-key add -

0 件のコメント:

コメントを投稿