
第5回 システム・バックアップを基礎の基礎から
浅野史彦、小川典嗣
アイティーブースト(http://www.itboost.co.jp/)
2003/1/7
各バックアッププログラムの基本操作
バックアップを取るためのツールは多数存在します。ここではtar、dd、dumpという、タイプが異なる3つのツールを紹介します。
■tar
tarはアーカイブを作成するツールとして、広く普及しています。そのため、Windowsなどの異なるOSにデータを渡したい場合でも利用できます。
バックアップする場合は、どこまでをバックアップデータとするのかを考えましょう。例えば、/home/user1ディレクトリ以下のファイルをtarを利用してバックアップする場合、「user1」というディレクトリを含めるのか、そのディレクトリ内にあるファイルだけをバックアップするのかによって操作が変わります。
●tarを利用したバックアップ
user1ディレクトリ内のファイルのみをバックアップする場合は、以下のように実行します。
# cd /home/user1 |
逆に、user1ディレクトリごとバックアップする場合は、バックアップ対象の/home/user1ディレクトリの1階層上のディレクトリに移動してからtarを実行します。
# cd /home |
あるいは、Cオプションを利用して以下のように実行しても同じです。
# tar -C /home -cvf /dev/nst0 user1 |
●gzip/bzip2によるソフトウェア圧縮
一般的に、tarはほかの圧縮機能を持ったプログラムとともに利用されます。gzip圧縮の場合はzオプション、bzip2圧縮の場合はjオプションを利用します。
# tar -zcvf /dev/nst0 /directory |
| gzip圧縮を利用する場合 |
# tar -jcvf /dev/nst0 /directory |
| bzip2圧縮を利用する場合 |
●アーカイブのリストア
バックアップテープからデータをリストアする場合、まずは取り出すデータの位置までテープを移動させる必要があります。例えば、3番目のデータの先頭位置に移動するには以下のように実行します。
# mt -f /dev/nst0 rewind |
テープの状態を確認すると、以下のように表示されます。3番目のファイル(File number 2)の先頭(block number)に位置していることが分かります。
# mt -f /dev/nst0 status |
アーカイブの中身を確認するにはtオプションを利用します。
# tar -tf /dev/nst0 |
ただし、アーカイブに格納されているデータを読み取った場合、テープ位置が進んでしまいます。
# mt -f /dev/nst0 status |
確認後、アーカイブを展開するには一度巻き戻しを行い、データを展開します。
# cd /backup |
●特定のファイルのみのリストア
すべてのデータを展開することによってファイルシステムの領域を圧迫することが予想されるのであれば、一部のファイルだけを取り出すことも可能です。その場合は、第2引数に取り出したいファイル名を指定します。
ただし、第2引数のファイル名の指定方法は、バックアップを実行したときのコマンドラインに依存します。例えば、ホームディレクトリを以下のようにしてバックアップした場合を検討してみましょう。
# cd / |
このバックアップから/home/user1/file というファイルだけをリストアしたいのであれば、以下のように実行します。
# tar xvf /dev/nst0 home/user1/file |
一方、以下のようにしてバックアップした場合はどうなるでしょうか。
# cd / |
この場合は、以下のように実行する必要があります。
# tar xvf /dev/nst0 ./home/user1/file |
■dd
ddは、パーティションやCD-ROM上に存在するデータの並びをそのままファイルにするために利用されることが多いツールです。イメージファイルを作成するときによく使われます。
●ddの書式
# dd if=input_file of=output_file
bs=block_size |
|
オプション
|
説明
|
| if= | コピー元のファイル名。if=を指定しない場合は標準入力を入力データとする。普通のファイルを利用することもできるが、ddを利用する場合は/dev/hda3や/dev/cdromなどのデバイスファイルを利用することが多い |
| of= | コピー先のファイル名。of=を指定しない場合は標準出力へデータを書き出す |
| bs= | 一度のI/O操作で転送されるデータサイズ(bytes)を指定 |
例えば、CD-ROMのデータのイメージファイルを作成する場合は、以下のように実行します。
# dd if=/dev/cdrom of=cdrom.iso |
| 注:ファイルシステムを通さずにデバイスから直接データを受け取るため、CD-ROMをマウントする必要はありません。 |
また、ハードディスクのMBR(マスターブートレコード:ディスクの先頭512bytesのデータ)にはブートローダおよびパーティションテーブルが含まれます。このデータもddで簡単にバックアップすることができます。
# dd if=/dev/hda of=mbr.img bs=512 count=1 |
■dumpとrestore
dumpは特定のファイル単位ではなく、ファイルシステム単位でバックアップします。Linuxのファイルシステムを通さずに、直接rawデバイスからデータをシーケンシャルに読み取りながらバックアップを実行するため、dump自身が対応しているext2あるいはext3ファイルシステムといった特定のファイルシステムのデータしか扱えません。ただし、ext2やext3ファイルシステム全体をバックアップするには最適です。システム全体をバックアップする用途に使用されることが多いツールです。
●dumpの書式
dumpはext2(あるいはext3)ファイルシステムに特化したバックアップツールです。このプログラムは「ファイル」や「ディレクトリ」ではなく、「ファイルシステム」を対象とするので、基本的には/dev/hda3や/dev/sdb1といったデバイスファイルを使い、以下のように実行します。以下の例の場合、テープに/dev/sda3に関連付けられたパーティションのデータがバックアップされます。
# dump -0uf /dev/st0 /dev/sda3 |
|
オプション
|
説明
|
| n | ダンプレベルを表す。0〜9まで指定できる |
| f | バックアップ先の指定(指定しない場合は/dev/tapeを使用) |
| u | /etc/dumpdatesを更新する。増分バックアップには必須 |
| nは数値 | |
●複数のテープにまたがるdump
バックアップデータが大きく、図3のように複数のテープにまたがってデータを保存しなければならない場合があります。
![]() |
| 図3 複数のテープにまたがったデータ |
そのような場合、以下のようにテープの入れ替えを促すメッセージが表示されるので、テープの入れ替えを行って「y」を入力します。
(略) |
●バックアップの種類
dumpコマンドはダンプレベルを指定することで、フルバックアップだけではなく、差分バックアップや増分バックアップを取ることができます。実際にバックアップがどの程度必要なのかを考えて、バックアップスケジュールを設定する必要があります。
|
バックアップの種類
|
説明
|
| フルバックアップ | ファイルシステム上すべてのデータをバックアップする |
| 差分(ディファレンシャル) バックアップ |
フルバックアップ以降に追加あるいは変更されたデータだけをバックアップ対象とする |
| 増分(インクリメンタル) バックアップ |
フルバックアップまたは増分バックアップ以降に追加あるいは変更されたデータだけをバックアップ対象とする |
●フルバックアップ時の注意
ダンプレベルに0を指定すると、ファイルシステム上の全ファイルをバックアップします。フルバックアップしたデータは、データをリストアする際に非常に重要になるものなので、細心の注意を払って扱う必要があります。
例えば、以下のようなルールを決めておくことをお勧めします。
- バックアップ前には、必ずクリーニングテープでヘッドを清掃する
- シングルユーザーモードでバックアップを取る
- フルバックアップを取ったテープにはほかのデータを追記せず、適切な場所に保管する
シングルユーザーモードで行うことを推奨しているのは、バックアップ中にファイル内容が変更されたり、ファイルを移動/削除してしまった場合、そのファイルが正常にバックアップされるかどうか保証されないからです。
フルバックアップは頻繁に行うことではないので、できる限りシングルユーザーモードで行うことを推奨します。
●/etc/dumpdates
/etc/dumpdatesには、各ファイルシステムに対するdumpコマンドの使用記録がダンプレベルとともに収められています。このファイルには3つのフィールドが存在し、それぞれ以下のような意味があります。
バックアップしたファイルシステム ダンプレベル 日付 |
このファイルは、増分バックアップの際にdumpレベルを調べるために使用されます。dumpコマンドに-uオプションを付けると、/etc/dumpdatesファイルが更新されます。
このファイルのデータを基に、「指定したダンプレベルより低いレベル」で、かつ「最新のバックアップ」からの差分をダンプします。例えば、以下のような状態から、ダンプレベル5でdumpすると「ダンプレベル5より低く」かつ「最新のバックアップ」である、ダンプレベル4からの増分バックアップを取ります。
# cat /etc/dumpdates |
●フルバックアップのリストア
dumpコマンドによって作成したアーカイブは、restoreコマンドで展開します。リストア先はtarの場合と同じで、カレントディレクトリになります。
restoreコマンドは以下のようなオプションとともに利用します。
|
オプション
|
説明
|
| t | アーカイブ中に含まれるファイル一覧を出力 |
| x | 特定のファイルをリストアする |
| r | リストアする |
| v | 詳細表示する |
| i | 対話モードに入り、リストア操作をする |
| f | リストア元の指定(指定なしの場合は/dev/tape) |
dumpしたデータに含まれるすべてのファイルをリストアするには、以下のように実行します。
# restore -rf /dev/nst0 |
restoreを実行すると、restoresymtableというファイルがカレントディレクトリに作成されます。増分バックアップをリストアするときにこのファイルを使って、リストアするファイルの情報を得ます。そのため、すべてのリストアが終了するまではこのファイルが必要になります。リストア終了後は不要になるので、削除しましょう。
●複数のテープにまたがるdumpのリストア
複数のテープにまたがって保存したデータをリストアする場合は、1番目のテープ(Volume 1)をドライブに挿入してrestoreを実行します。
# restore -rvf /dev/st0 |
上記のようなメッセージが表示されたら、2本目のテープ(Volume2)に入れ替えて[Enter]を入力します。その後、順次テープを入れ替えながらリストアしていく形になります。
●特定のファイルのみのリストア xオプションの利用
アーカイブから特定のファイルだけをリストアしたい場合、xオプションを利用します。例えば、/homeパーティションのバックアップデータから/home/user1/fileだけをリストアしたい場合、以下のように実行します。
# restore -xf /dev/nst0 ./user1/file |
●特定のファイルのみのリストア 対話的リストア
iオプションを利用すれば、対話的にファイルをリストアできます。
# restore -if /dev/st0 |
この状態では、cdやlsを利用しながら、通常のファイルシステムを利用するのと同様の操作で、リストアするデータを選択できます。
リストアするファイルを指定する場合は、addコマンドを利用します。例えばfileをリストアするのであれば、以下のように実行します。
restore > add file |
その後、extractコマンドで実際にリストアを行います。
restore > extract |
●増分バックアップのリストア
インクリメンタルバックアップしたアーカイブからファイルシステム全体をリストアする場合、ダンプレベル0から順番にリストアしていく必要があります。すべてのレベルのリストアが終了すれば、restoresymtableファイルは不要になるので削除しましょう。
|
3/3
|
|
|
||||||
|
||||||
| 連載 Linux管理者への道 |
| Linux Squareフォーラム Linux/システム学習関連記事 |
| 連載:Windowsユーザーに教えるLinuxの常識(全12回) Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授! |
|
| 連載:LFSで作って学ぶLinuxの仕組み(全4回) 管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する |
|
| 連載:Linux管理者への道(全8回) 「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう |
|
| Linux Squareフォーラム全記事インデックス |
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

