7.2. バックアップ
7.2.1. バックアップの種類
完全バックアップ(フルバックアップ)
すべてのファイルを対象としてバックアップを行うもの。
特徴は以下の通り。
- バックアップに時間がかかる
- バックアップに必要な容量も大きい
差分バックアップ
前回のフルバックアップ以後に作成/変更されたファイルのみをバックアップする。
特徴は以下の通り。
- フルバックアップより処理に時間がかからない
- バックアップ後にはフルバックアップと最新の差分バックアップが必要
増分バックアップ
前回のバックアップ(フルバックアップ/差分バックアップ/増分バックアップ)以後に作成/変更されたファイルのみをバックアップする。
特徴は以下の通り。
- 3種類で最も処理時間が短い
- 復元にはフルバックアップ/それ以降の増分バックアップが必要
7.2.2. バックアップデバイス
バックアップに利用できるデバイスには以下のようなものがある。
CD-R/RW リムーバブルハードディスク
CD-R/RWは安価で容量が小さい。
リムーバブルハードディスクは高速で大容量で高価となる。
DVD-R/RW
DVD-R/RWはCD-R/RWより大容量なディスク。
容量は4.7GB~8.54GBほど。
BD-R/RE
BD-R/REはDVD-R/RWよりも大容量なメディア。
容量は約25GB~50GBほど。
特徴は以下の通り。
- BD-Rは一度のみ書き込み/追記が可能
- BD-REは繰り返し書き換えできる
磁気テープ
大容量で低価格のメディア。
容量は規格により異なり、また定期的に取り換える必要がある。
| 規格 | 容量 | 
|---|---|
| DDS4 | 40GB(圧縮時) | 
| SuperDLT-300 | 320GB(圧縮時) | 
| LTO Ultrium3 | 800GB(圧縮時) | 
7.2.3. オンサイトとオフサイト
バックアップの保管場所にはオンサイトとオフサイトのバックアップがある。
- オンサイト … バックアップ対象のシステムと同一拠点にバックアップを保管する
- オフサイト … 別拠点にバックアップを保管する
ネットワーク経由のバックアップ
ツールではAMANDA, Balcula, BackupPC, Bareosなどでネットワーク経由でバックアップ可能。
またストレージ用のネットワーク構築にはSANが使用される。
- AMANDA … 1台のAmandaサーバでネットワーク内の複数のクライアントをテープ/ディスクドライブにバックアップ可能
- Balcula … 1台のBaculaサーバでネットワーク内の複数のクライアントを様々な記録メディアにバックアップ可能、CUI/GUIを使える
- BackupPC … いくつかの標準プロトコルを利用するのでクライアント不要のバックアップツール、WebUIを使用可能
- Berous … Baculaプロジェクトから派生したバックアップツール
7.2.3. ローカルのバックアップ
tarコマンド
tarコマンドはファイルやディレクトリを1つのアーカイブファイルにしたり、圧縮/展開するコマンド。
デフォルトで圧縮しないため、tarコマンドで圧縮を行うためには-zオプションや、-jオプションを指定する必要がある。
tar [オプション] [ファイル]| オプション | 説明 | 
|---|---|
| -c | アーカイブの作成 | 
| -x | アーカイブからファイルの取り出し | 
| -t | アーカイブの内容の確認 | 
| -f ファイル名 | アーカイブファイル名の指定 | 
| -z | gzip による圧縮 ・ 展開 | 
| -j | bzip2 による圧縮 ・ 展開 | 
| -J | 7zip による圧縮 ・ 展開 | 
| -v | 詳細な情報の表示 | 
| -u | アーカイブ内にある同じ名前のファイルより新しいものだけを追加 | 
| -r | アーカイブにファイルの追加 | 
| -N | 指定した日付より新しいデータのみを対象とする | 
| -M | 複数デバイスへの分割 | 
| –delete | アーカイブからファイルの削除 | 
使用例は以下の通り。
tar jcf /dev/sdb1 - # USBメモリにホームディレクトリcpioコマンド
ファイルをアーカイブファイルにコピーしたり、アーカイブからファイルをコピーできるコマンド。
cpio [フラグ] [オプション]| フラグ | 説明 | 
|---|---|
| -i オプション パターン | アーカイブからファイルを抽出 | 
| -o オプション | アーカイブの作成 | 
| -p オプション ディレクトリ | ファイルを別のディレクトリにコピー | 
| オプション | 説明 | 
|---|---|
| -A | 既存のアーカイブファイルに追加 | 
| -d | 必要な場合にディレクトリの作成 | 
| -r | ファイルを対話的に変更 | 
| -t | コピーせず、入力内容の一覧表示 | 
| -v | ファイル名の一覧表示 | 
使用例は以下の通り。
ls | cpio -o > /tmp/backupddコマンド
入力側に指定したファイル内容をファイルもしくは標準出力に送るコマンド。
デバイス間のディスクコピーやブートドライブの作成に利用可能。
dd [オプション]| オプション | 説明 | 
|---|---|
| if=入力ファイル | 入力側の指定(標準は標準入力) | 
| of=出力ファイル | 出力側ファイルの指定(標準は標準出力) | 
| bs=バイト数 | 入出力のブロックサイズを指定 | 
| count=回数 | 回数分の入力ブロックをコピーする | 
ddコマンドでは入力に以下のいずれかの特殊ファイルを指定してデータの上書きを行える。
格納されたデータを消去することが可能。
- /dev/zero… 16進数のデータ「0x00」を生成する特殊ファイル
- /dev/urandom… 擬似乱数を生成する特殊ファイル
dumpコマンド
ファイルシステム単位でext2/ext3/ext4ファイルシステムをバックアップするコマンド。
バックアップからファイルを取り出すときなどに使用でき、磁気テープにバックアップを取る際に適している。
dump [オプション] [バックアップ対象]| オプション | 説明 | 
|---|---|
| 0~9 | dumpレベルを指定する(0は完全バックアップ) | 
| u | バックアップ実装時に /etc/dumpdatesを更新する | 
| f デバイス名 | バックアップ装置のデバイスを指定する | 
dumpレベルの指定で増分バックアップが可能。
なお増分バックアップを行う際はuオプションの指定し、バックアップの記録を/etc/dumpdatesに記録する必要がある。
dump 0uf /dev/st0 /dev/sda4磁気テープの命名規則には以下のような特徴がある。
- /dev/st0… 自動巻き戻しをする
- /dev/nst0… 自動巻き戻しをしない
restoreコマンド
dumpコマンドで作成したバックアップからファイルやディレクトリを取り出すコマンド。
restore [オプション] [ファイル名]| オプション | 説明 | 
|---|---|
| r | すべてのファイルを取り出す | 
| i | 対話的にファイルを取り出す | 
| f デバイス名 | バックアップ装置のデバイスを指定 | 
mtコマンド
テープドライブを操作するコマンド。
mt [-f デバイス] [オペレーション]| オペレーション | 説明 | 
|---|---|
| status | テープの状態を表示 | 
| tell | テープの現在地の表示 | 
| rewind | テープを先頭に巻き戻す | 
| fsf N | テープをN個先のデータを先頭位置まで早送りにする | 
| compression 1 | ハードウェア圧縮を使用する | 
| compression 0 | ハードウェア圧縮を使用しない | 
使用例は以下の通り。
# テープの現在地から3つ先にあるデータの先頭位置までテープを早送り
mt -f /dev/st0 fsf 37.2.4. ネットワーク経由でのバックアップ
rsyncコマンド
リモートホスト間でファイルやディレクトリをコピーできるコマンド。
rsync [オプション] [ホスト名:] バックアップ元ディレクトリ [ホスト名:] バックアップ先ディレクトリ| オプション | 説明 | 
|---|---|
| -v | コピー中のファイルを表示 | 
| -a | アーカイブモード(属性もそのままコピー) | 
| -r | ディレクトリ内を再帰的にコピーする | 
| -u | 変更/追加されたファイルのみをコピーする | 
| -l | シンボリックリンクをそのままコピーする | 
| -H | ハードリンクをそのままコピーする | 
| -o | 所有者をそのまま維持 | 
| -g | 所有グループをそのまま維持 | 
| -t | タイムスタンプをそのまま維持する | 
| -n | テスト | 
| -z | ファイルを圧縮する | 
| -delete | コピー元ファイル削除コピー先でも削除する | 
使用例は以下の通り。
# ローカルホスト内でdirディレクトリを/backupディレクトリ内にコピー
rsync -auv --delete dir /backup
# ローカルホスト内でdirディレクトリ内のファイルを/backupディレクトリ内にコピー
rsync -auv --delete dir/ /backup
# host12の/backupに差分保存する例
rsync -auvz --delete -e ssh dir host12:/backup