* Linuxをシステムバックアップ [#f8d805de]
** いろいろな方法 [#n5d12fa3]
バックアップの方法は、バックアップ先の媒体、バックアップ用ツールなどの選択から始まります。

- [[第5回 システム・バックアップを基礎の基礎から:http://www.atmarkit.co.jp/flinux/rensai/root05/root05a.html]](@IT)

*** 媒体 [#g30df83e]
媒体には、下記のものがあります。
- テープ
- 光メディア(CD-Rなど)
- ハードディスク

テープはバックアップ媒体の定番ですが、容量に対してデバイスの価格が高すぎます。10GB程度で100,000円強(DDS-3)です。さらに別の規格のデバイスならば、100GB超を保存できますが、数百万円のコストがかかり、個人でどうにかなるレベルではありません。

光メディアは容量てきに心許ないです。そこで、ハードディスクとしました。可搬性が低いと言われますが、いざとなればポータブルハードディスクを使えばよいでしょう。昨今では100GB近いものも出ています。

*** ツール [#i06c56b4]
バックアップツールには、下記のものがあります。
- tar
- dd
- dump

tarはファイルシステム上で、アーカイブを作成します。なので、ファイル単位で個別のバックアップを行ないたい場合に使います。

ddは、ファイルシステムを介さずに、直接デバイス上のデータを、ブロックサイズでコピーおよび変換するツールです。HDDやCD-ROMの内容をまるごとイメージ化する場合や、MBRの内容をFDにコピーする場合に、便利です。ファイルシステムを介さないため、あらゆるファイルシステムのデータを扱えます。

 dd if=[入力元] of=[出力先] bs=[ブロックサイズ] count=[ブロック数]

dumpは、ファイルシステムごと、バックアップを作成します。もともとバックアップ用のツールであり、増分バックアップや差分バックアップを行なえます。ただし、ファイルシステムベースのため、dump自体が対応しているext2,ext3しか扱えません。

今回は、媒体にハードディスクを、ツールにdumpを利用します。

** dumpコマンドの利用 [#s3a1bb6f]
まず、バックアップデータを置く場所を用意します。今回は、予備用のディスクを"/mnt/hdc/"にマウントしています。そのなかに、dump_backupというディレクトリを作成しました。
 # cd /mnt/hdc/
 # mkdir dump_backup

さっそくdumpを実行します。最初に行なうのは、フルバックアップです。バックアップ中のデータに対するアクセスを排他するため、シングルユーザーモードで行なったほうが良いです。再起動して、下記のように、起動パラメータを入力してください。
 boot:linux single

あとは、dumpコマンドを発行するだけです。
 # cd /mnt/hdc/dump_backup
 # dump -0uf /mnt/hdc/dump_backup/backup_usr /dev/hda5

上記では、出力先に、"/mnt/hdc/dump_backup/backup_usr"というファイルを指定しています。fオプションの後ろに書きます。fオプションを指定しないと、テープデバイスがデフォルトとなります。入力元には、デバイスを指定します。上記の例では、"/usr"がマウントされている"/dev/hda5"(※うちの環境の場合)を指定します。同様に、他の必要なパーティションに対しても、dumpします。

dumpコマンドについて、説明します。
 dump -nuf [出力先] [入力元]
- n : ダンプレベルの指定(0-9)
- u : "/etc/dumpupdate"を更新する。増分バックアップで必要
- f : 出力先の指定。"/dev/tape"以外に出力する場合、必要

フルバックアップ以降の差分を取りたい場合は、下記のようにします。
 dump -1uf /mnt/hdc/dump_backup/backup_usr /dev/hda5

*** 差分バックアップと増分バックアップ [#v38d8ed5]
いくつかのサイトを回ると、差分バックアップと増分バックアップを明確に分けず、増分バックアップで一括りにしているところがあり、混乱しました^-^;。
|差分バックアップ|前回のフルバックアップからの差分|
|増分バックアップ|前回のバックアップからの増分|

差分バックアップの例です。
|日曜|フルバックアップA|
|月曜|差分バックアップB|
|火曜|差分バックアップC|
|水曜|差分バックアップD|
Bは、月曜のデータとAとの変化分です。Cは、火曜のデータとAとの変化分です。Dは、水曜のデータとAとの変化分です。復旧の場合は、フルバックアップと1つの差分バックアップがあればOKです。

増分バックアップの例です。
|日曜|フルバックアップA|
|月曜|増分バックアップB|
|火曜|増分バックアップC|
|水曜|増分バックアップD|
Bは、月曜のデータとAとの変化分です。Cは、火曜のデータとBとの変化分です。Dは、水曜のデータとCとの変化分です。復旧の場合は、フルバックアップとそれまでの全ての増分バックアップが必要です。ただし、増分バックアップのサイズは、基本的に差分バックアップよりも小さくなります。

見てのとおり、月曜の時点では、差分も増分も変わりないのです。

dumpコマンドで差分バックアップを行なうためには、dumpレベル0でバックアップを行なったあと、dumpレベル1でバックアップを行なえばOKです。

dumpコマンドで増分バックアップを行なうためには、dumpレベルを前の日に対して1つずつ上げていく必要があります。dumpレベルは10個しかないので、それ以上はできません。差分バックアップと適宜組み合わせてください。

組合せ例(1)
|月初|0|フルバックアップ|
|日曜|1|差分バックアップ|
|月曜|2|増分バックアップ|
|火曜|3|増分バックアップ|
|水曜|4|増分バックアップ|
|木曜|5|増分バックアップ|
|金曜|6|増分バックアップ|
|土曜|7|増分バックアップ|

組合せ例(2)
|月初|0|フルバックアップ|
|日曜|3|差分バックアップ|
|月曜|4|増分バックアップ|
|火曜|5|増分バックアップ|
|水曜|3|差分バックアップ|
|木曜|4|増分バックアップ|
|金曜|5|増分バックアップ|
|土曜|6|増分バックアップ|

** 復旧のための準備 [#n1b2a7fb]
起動用のFDを作成して、必要なコマンドなどを入れておきます。

リストアします。展開先はカレントディレクトリになるので、復旧先へ移動しましょう(復旧先のパーティションやマウントは、あらかじめ行なってください)。

 # cd /usr
 # restore -rf /mnt/hdc/dump_backup/backup_usr

..TBD..

※このあたりは、まだ実践していないため、無保証不正確です。

*** 一部データを取り出したい場合 [#r7ec47ec]
システム全体の復旧ではなく、特定のファイルのみを取り出したい場合、restore コマンドの対話型インターフェイスを使うと、便利です。

 # restore -if /backup/dumpdata
 restore > ls
 .... [ファイル一覧] ....
 restore > add ftp  ←取り出したいファイル/ディレクトリ名
 restore > extract
 .....
 Specify next volume # (none if no more volumes): 1 ←とりあえず 1 を入れておく
 .....
 restore > quit

参考ページ
- [[dump と restore:http://www.turbolinux.co.jp/products/server/11s/user_guide/x12383.html]]
** 参考ページ [#t3cfefae]
- [[バックアップコマンド dump:http://www.nuclear.phys.tohoku.ac.jp/~ykoba/latex2html/backup/node1.html]]

----
** 履歴 [#e0c2731a]
- 2007/03/25 ぼくぴ 新規作成

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS