バックアップとリカバリの方法

はじめに

第40章はじめに

このビデオでは、この章で説明するトピックの概要を簡単に説明します。


学習目標
この章の終わりまでに、次のことができるようになります。

バックアップが必要なデータを特定して優先順位を付けることができます。
状況に応じて、さまざまな種類のバックアップ方法を採用できます。
効率的なバックアップと復元の戦略を確立できます。
cpio、tar、gzip、bzip2、xz、dd、rsync、dump、restore、mtなどのさまざまなバックアップ ユーティリティを使用できます。
最も有名な2つのバックアップ プログラム、AmandaとBaculaについて説明できます。


バックアップとリカバリの方法

バックアップする理由
1つのパーソナル システムのみを管理している場合でも、多数のマシンのネットワークを管理している場合でも、システム バックアップは非常に重要です。

クリックすると、データをバックアップするいくつかの理由について詳しく知ることができます。

バックアップの理由

データは重要
ディスク上のデータは重要な作業成果物であるため、保護すべきです。失われたデータを再度作成するのは、時間と費用がかかります。一部のデータは他にない唯一のものであり、再度作成する方法がない場合があります。

ハードウェア障害
ストレージ メディアの信頼性は向上していますが、ドライブ容量も向上しています。しかし、1バイトあたりの故障率が低下したとしても、予測できない故障は発生します。故障したドライブと故障する可能性のあるドライブの2種類しかないと言うのは、悲観的かもしれませんが事実です。RAIDを使用するとデータ保護には役立ちますが、それでもバックアップは必要です。

ソフトウェアの失敗
完璧なソフトウェアはありません。バグはデータを破壊または破損する可能性があります。長期間使用している安定したプログラムでも問題が発生する場合があります。

人間は間違いを犯すもの
誰もがOOPS！（しまった！）を聞いたことがあるはずです。（またはもっと悪い場合は）隣のパーティションから（または彼らの口から）聞こえたことがあるはずです。時には、単純な入力ミスだけで、ファイルとデータが大規模に破壊されることがあります。

悪意のある人が意図的に損害を引き起こす可能性
それは、普通に不満を抱く従業員か、もしくは損害を起こすポイントを知っている外部のハッカーかもしれません。セキュリティの問題とバックアップ機能は非常に強く関連しています。

原因不明のイベントの発生
ファイルは、どのように、誰が、いつ起こったかを知らなくても、ただ消えてしまう可能性があります。

巻き戻し機能は役に立つ
場合によっては、システムのすべてまたは一部を、以前のスナップショットに復元する必要があります。


バックアップが必要なものは何か？
バックアップ データには、重要なデータも、それほど重要ではないデータも、保存する必要のないデータもあります。

クリックして各ボックスを展開し、バックアップが重要なデータを優先度順に確認します。

バックアップする必要があるのはどんなデータ？

絶対に必要なもの
次のデータは常にバックアップする必要があります。

ビジネス関連データ
システム構成ファイル
ユーザー ファイル（通常は/homeの下）

多分必要なもの
スプール ディレクトリ（印刷、メールなど）
ログ ファイル（/var/logなどにあります）

おそらく必要がないもの
簡単に再インストールできるソフトウェア。適切に管理されたシステムでは、これはほとんどこの対象になるはずです
/tmpディレクトリ。その内容は実際には一時的なものにすぎないためです。

絶対に必要ないもの
/proc、/dev、/sysなどの疑似ファイルシステム
スワップ パーティションまたはファイル

明らかに、組織に不可欠なファイルにはバックアップが必要です。構成ファイルは頻繁に変更される場合があり、個々のユーザーのファイルとともにバックアップが必要です。

システムの履歴を調査する必要がある場合、ログ ファイルは重要になります。これは、侵入やその他のセキュリティ違反を検出するために特に重要です。

簡単に再インストールできるものをバックアップする必要はありません。また、スワップ パーティション（またはファイル）と/procファイルシステムは、（/tmpディレクトリと同じように）これらの領域のデータが基本的に一時的なものであるため、一般的にバックアップしても意味がありません。


バックアップ vs. アーカイブ
すべてのバックアップ メディアには、読み取りができなくなる寿命があります。標準の推定値は次のとおりです。

磁気テープ：10～30年
CDとDVD：3〜10 年
ハードディスク：2〜5年

寿命は以下のものの影響を受けます。

環境条件（温度、湿度など）
メディアの品質
現在のオペレーティング システムとハードウェアでデータを読み取ることができる実用的なソフトウェアがあること。

寿命は、バックアップに使うには十分ですが、恒久的なデジタル アーカイブとしては不十分です。

通常のバックアップのタイムスケールよりも寿命が長ければ、データは、複数のコピーを使用して保存できます。さらに、時々新しいメディアにコピーすることで保存できます。

非常に長い期間（つまり、数十年、数世紀など）経つと、すべて（ハードウェア、ソフトウェア、ドキュメント形式、メディアなど）が時代遅れとなり、標準的な保存方法は簡単には機能しなくなります。

安価なデジタル形式はどれも、実際には、紙やフィルムほど長期間保存できません（適切に保管され、ワインのように継続的に手入れされているとしてもです）。

これは人々が考える深刻な問題であり、すべてが失われる前に良い解決策を考えるべきです。


テープ ドライブ
テープ ドライブは、以前ほど一般的ではありません。それらは比較的低速で、順次アクセスのみを許可します。現在の作業では、プライマリ バックアップに使用することはほとんどありません。長期に参照するために、アーカイブ目的のオフサイト ストレージとして使用される場合があります。ただし、磁気テープ ドライブの寿命は、物理的な劣化やデータの損失がなくても、常に限りがあります。

最近のテープ ドライブはほとんどがLTO（Linear Tape Open）で、1990年代後半にオープン スタンダードの代替として最初のバージョンが登場しました。初期のフォーマットはほとんどが独自のものでした。初期バージョンは最大100GBを保持していました。新しいバージョンでは、同じサイズのカートリッジで 2.5TB以上を保持できます。

日々のバックアップは通常、何らかの形式のNAS（Network Attached Storage）またはクラウド ベースのソリューションを使用して行われるため、新しいテープ ベースのインストールはますます魅力的ではなくなっています。ただし、まだそれらを使う場面があり、システム管理者は対処する必要があります。

この後は、バックアップ メディアの特定の物理的な形式には焦点を当てず、より抽象的に説明します。


バックアップ方法
保護対象のシステムと同じ物理的な場所に、すべてのバックアップを格納しないでください。そうしないと、火災またはその他の物理的損傷により、全損となる可能性があります。過去には、バックアップとは、磁気テープを安全な場所に物理的に輸送することを意味していました。現在は、バックアップ ファイルをインターネット経由で別の物理的な場所に転送することを意味しています。明らかに、これは、適切な暗号化とその他のセキュリティ予防措置を使用して、安全な方法で実行する必要があります。

多くの場合、複数の異なるバックアップ方法を、互いに連携して使用できます。

クリックして各カードを反転し、これらのバックアップ方法の詳細をご覧ください。 

完全バックアップ
システム上のすべてのファイルのバックアップ。

増分バックアップ
最後に行った増分、または完全バックアップ以降に変更されたすべてのファイルのバックアップ。

差分バックアップ
最後の完全バックアップ以降に変更されたすべてのファイルのバックアップ。

複数のレベルの増分バックアップ
同じレベルまたは以前のレベルにおいて、最後に取られたバックアップ以降に変更されたすべてのファイルのバックアップ。

ユーザー
特定のユーザーのディレクトリ内のファイルのみをバックアップ。


バックアップ戦略
バックアップ方法は、対応する復元方法がないと役に立たないことに注意してください。バックアップの戦略を選択する際には、両方向の堅牢性、明瞭性、および使いやすさを考慮する必要があります。

最も単純なバックアップ戦略は、すべてを一度完全バックアップしてから、その後変更されるすべての増分バックアップを実行することです。完全バックアップには多くの時間がかかる場合がありますが、増分バックアップからの復元はもっと困難で時間がかかる場合があります。したがって、両方を組み合わせれば時間と労力を最適化できます。

以下に、テープに関する有用な戦略の一例を示します（以下の説明中の「テープ」を、他のメディアに置き換えることもできます）。

金曜日の完全バックアップには、テープ1を使用します。
月曜日から木曜日の増分バックアップには、テープ2〜5を使用します。
第2金曜日の完全バックアップには、テープ6を使用します。
2番目の月曜日から木曜日の増分バックアップには、テープ2〜5を使用します。
テープ6の完全バックアップが完了するまで、テープ1を上書きしないでください。
テープ6に完全バックアップした後、災害復旧時のためにテープ1を外部の場所に移動します。
次の完全バックアップ（次の金曜日）には、テープ6の代わりにテープ1を使います。

目安として、少なくとも2週間のバックアップを用意するようにしてください。


バックアップ ユーティリティ
多くのプログラムがバックアップ目的で使用されます。

クリックして各ボックスを展開し、バックアップ ユーティリティの詳細をご覧ください。

バックアップ ユーティリティ

cpioとtar
cpioとtarは、ファイルのアーカイブの作成と抽出を行います。

gzip、bzip2、xz
ほとんどの場合、アーカイブはgzip、bzip2、xzで圧縮されています。アーカイブ ファイルは、ディスク、磁気テープ、またはファイルを保持できる他のデバイスに書き込むことができます。アーカイブは、あるファイルシステムやマシンから別のファイルシステムやマシンにファイルを転送するのに非常に便利です。

dd
この強力なユーティリティは、メディア間で生データを転送する時によく使用します。パーティション全体またはディスク全体をコピーできます。

rsync
この強力なユーティリティは、ネットワーク全体で、またはローカル マシン上の異なるファイルシステムの間で、ディレクトリ サブツリーまたはファイルシステム全体を同期できます。

dumpとrestore
これらの古くからあるユーティリティは、バックアップ専用に設計されました。ファイルシステムから直接読み込みます（より効率的な方法です）。ただし、元のファイルシステムと同じ種類のファイルシステムに復元しなければなりません。今はもっと新しい選択肢があります。

mt
このユーティリティは、バックアップと復元を実行する前に、テープの状態を問合せをして位置調整するのに役立ちます。


tarを使用したバックアップ
tarは使いやすいユーティリティです。

tarアーカイブを作成する場合、引数としてディレクトリを指定すると、そのディレクトリのすべてのファイルとサブディレクトリがアーカイブに含まれます。
復元するとき、必要に応じてディレクトリを再構成します。
さらに、増分バックアップを実行できる--newerオプションもあります
Linuxで使用されるtarのバージョンは、1本のテープまたは使用するデバイスに納まらない量のバックアップも処理できます。

以下に、バックアップにtarを使用する方法の例をいくつか示します。

-cまたは--createを使用してアーカイブを作成する場合：

$ tar --create --file /dev/st0 /root
$ tar -cvf /dev/st0 /root

-fまたは--fileオプションを使用して、デバイスやファイルを指定できます。

バックアップが1つのデバイスに納まらない時に、-Mまたは--multi-volumeを使用して、マルチボリューム オプションで作成する場合：

$ tar -cMf /dev/st0 /root

必要に応じて、次のテープを入れるように求められます。

-dまたは--compareを使用して、比較オプションでファイルを検証する場合：

$ tar --compare --verbose --file /dev/st0
$ tar -dvf /dev/st0

バックアップを作成した後、上記の検証オプションを使用して、全部揃っていてかつ正しいことを確認できます。

デフォルトでは、tarはすべてのサブディレクトリを再帰的にアーカイブ内に格納します。

アーカイブを作成すると、tarは、絶対パス名から先頭のスラッシュを削除する旨のメッセージを出力します。これにより、ファイルをどこにでも復元できますが、デフォルトのこの挙動を変更することもできます。

ほとんどのtarオプションは、ダッシュを1つ付けた短い形式、または2つ付けた長い形式で指定できます。-cは--createと完全に同じです。また、（短い表記を使用する場合）オプションを組み合わせることができますが、その時にはすべてのダッシュを入力する必要がないことに注意してください。

さらに、シングル ダッシュのtarオプションは、ダッシュ付きでもダッシュなしでも使用できます。

$ tar cvf file.tar dir1

結果は以下と同じです。

$ tar -cvf file.tar dir1


tarを使用したファイルの復元
-xまたは--extractオプションは、デフォルトでアーカイブからファイルを抽出します。特定のファイルだけを指定すると、抽出するファイルを絞り込むことができます。ディレクトリを指定すると、そこに含まれるすべてのファイルとサブディレクトリも抽出されます。

-pまたは--same-permissionsオプションは、ファイルを元の権限で復元します。

-tまたは--listオプションは、アーカイブ内のファイルをリストしますが、抽出はしません。

以下にいくつかの例を示します。

アーカイブから抽出する場合：

$ tar --extract --same-permissions --verbose --file /dev/st0
$ tar -xpvf /dev/st0
$ tar xpvf /dev/sts0

復元に特定のファイルのみを指定する場合：

$ tar xvf /dev/st0 somefile

tarバックアップの内容をリストする場合：

$ tar --list --file /dev/st0
$ tar -tf /dev/st0


tarを使用した増分バックアップ
-N（もしくは同等の--newer）または--after-dateオプションを使用すれば、tarで増分バックアップを実行できます。どのオプションでも、日付または対象（基準）のファイル名のいずれかを指定する必要があります。

$ tar --create --newer '2011-12-1' -vf backup1.tar /var/tmp
$ tar --create --after-date '2011-12-1' -vzf backup1.tar /var/tmp

どちらの形式でも、2011年12月1日以降に変更された/var/tmp内のすべてのファイルのバックアップ アーカイブが作成されます。

tarはファイルの日付のみを調べ、パーミッションやファイル名など、ファイルに対する他の変更は考慮しません。これらの変更を含むファイルを増分バックアップに含めるには、検索して、バックアップするファイルのリストを作成します。

🚩
--newerなどのオプションが後に続く場合、-vzfなどのオプションではダッシュを使用する必要があります。そうしないとtarが混乱します。この種のオプション指定の混乱は、psやtarのような古いUNIXユーティリティで発生することがあります。そこには、さまざまなUNIXファミリーが関係する複雑な歴史があります。



アーカイブの圧縮方法
現代のマシンでは、圧縮されていないファイルを単に送信（またはコピー）するよりも圧縮 → 送信 → 解凍サイクルの方が速いことがあります。このため、ファイルを圧縮してディスク容量やネットワーク転送時間を節約することがしばしば望まれます。

Linuxには、一般的に使用される多くの圧縮技術があります。（圧縮時間は長くなりますが）圧縮効率を高める手段として以下があります。

gzip
Lempel-Zivコーディング（LZ77）を使用して、.gzファイルを生成します。

bzip2
Burrows-Wheelerブロック ソート テキスト圧縮アルゴリズムとHuffmanコーディングを使用し、.bz2ファイルを生成します。

xz
.xzファイルを生成します。従来の.lzma形式もサポートします。

解凍時間は、圧縮時間ほど変化しません。小さなファイルで日常的に使用する場合、通常はgzipを使用します。これは非常に高速であるためです。しかし、大きなファイルやアーカイブの場合は、他の2つの方法がよく使用されます。たとえば、Linux Kernel Archivesは現在、xz形式でのみカーネルを提供しています。

.zip形式は、他のオペレーティング システムからレガシー アーカイブを抽出する場合を除き、Linuxではほとんど使用しません。

圧縮ユーティリティは、tarと組み合わせて非常に簡単に（そして頻繁に）使用されます。

$ tar zcvf source.tar.gz source
$ tar jcvf source.tar.bz2 source
$ tar Jcvf source.tar.xz source

これらは圧縮アーカイブを作成します。最初のコマンドは、以下のコマンドと結果がまったく同じです。

$ tar cvf source.tar source ; gzip -v source.tar

しかし最初のコマンドの方がより効率的です。その理由は次のとおりです。

中間ファイル ストレージを使いません。
アーカイブと圧縮はパイプラインで同時に行われます。
解凍する場合：

$ tar xzvf source.tar.gz
$ tar xjvf source.tar.bz2
$ tar xJvf source.tar.xz

または、以下のコマンドでもできます。

$ tar xvf source.tar.gz

tarの最新バージョンは圧縮の方法を検出して自動的に処理します。

.jpg画像や.pdfファイルなど、明らかにコンポーネント ファイルが既に圧縮されているアーカイブでは、これらのメソッドを使用する価値はありません。


ddを使用するバックアップ
ddはオリジナルUNIXユーティリティの1つであり、非常に用途が広いです。オプションがない場合、ファイルまたはディスク全体をそのままコピーします。コピー中にさまざまな種類のデータ変換（バイト順の変更など）を実行でき、オフセット、バイト数、ブロック サイズなどを制御する多くのオプションがあります。

ddは、/dev/zeroや/dev/randomなどのスペシャル デバイス ノードから一定量のデータを読み取るためによく使用されます。基本的な構文は次のとおりです。

$ dd if=input-file of=output-file options

入力ファイルまたは出力ファイルが指定されていない場合、デフォルトではstdinとstdoutが使用されます。以下を実行した場合：

$ dd --help

頻繁に使用されるオプションや非常にまれなオプションなど、とても長いリストが表示されます。

以下はddの使用例です。

ゼロで満たされた10MBのファイルを作成する場合：

$ dd if=/dev/zero of=outfile bs=1M count=10

ハード ドライブ全体を別のドライブにバックアップ（row copy）する場合：

$ dd if=/dev/sda of=/dev/sdb

ハード ディスクのイメージを作成する場合（後で別のハード ディスクに転送できます）：

$ dd if=/dev/sda of=sdadisk.img

パーティションをバックアップする場合：

$ dd if=/dev/sda1 of=partition1.img

CD ROMをバックアップする場合：

$ dd if=/dev/cdrom of=tgsservice.iso bs=2048

パイプラインでddを使用する場合：

$ dd if=ndata conv=swab count=1024 | uniq > ofile


rsyncを使用するバックアップ
rsync（リモート同期）は、次のようにネットワークを介して（または同じマシンの異なる場所の間で）ファイルを転送するために使用されます。

$ rsync [options] sourcefile destinationfile

同期元（ソース）と同期先（デスティネーション）は target:pathの形式を取ることができます。ここで、targetは[user@]hostの形式にすることができます。user@部分はオプションであり、リモート ユーザーがローカル ユーザーと異なる場合に使用されます。したがって、以下のrsyncコマンドはすべて実行可能です。

$ rsync file.tar someone@backup.mydomain:/usr/local
$ rsync -r a-machine:/usr/local b-machine:/usr/


場所の正確な指定（特に--deleteオプションを使用する場合）については、rsyncでは特に注意する必要があります。そのため、最初に--dry-runオプションを使用し、正しく動作することを確認してから実行することを強くお勧めします。

rsyncは非常に賢いです。ローカル ファイルとリモート ファイルを小さなチャンクで照合します。1つのディレクトリを類似のディレクトリにコピーする場合、差分のみをネットワーク経由でコピーするという点で非常に効率的です。これにより、2番目のディレクトリが最初のディレクトリと同期できます。多くの場合、-rオプションを使用します。これにより、rsyncはディレクトリ ツリーを再帰的にたどり、ソース ファイルとしてリストされているディレクトリから下のすべてのファイルとディレクトリをコピーします。したがって、プロジェクト ディレクトリをバックアップする場合、次の方法が非常に便利です。

$ rsync -r project-X archive-machine:archives/project-X

単純な（そして非常に効果的で高速な）バックアップ戦略は、rsyncコマンドを使用してネットワーク全体でディレクトリまたはパーティションを単純に複製し、そしてそれを頻繁に行うことです。


cpioを使用するバックアップ
cpio（コピー インとコピー アウト）は、UNIXの初期の頃から使用されている、一般的にはテープ バックアップ用に設計されたファイル アーカイバ ユーティリティです。新しいアーカイブ プログラム（正確にはあまり新しくありませんがtarなど）が、cpioに関連する多くのタスクを実行するために開発されてきているとしても、cpioはまだ生き残っています。

たとえば今までに、RPMパッケージをcpioアーカイブに変換して展開するためにrpm2cpioを使用することを学んできました。また、Linuxカーネルは、cpioのあるバージョンを内部的に使用して、ブート中にinitramfsとinitrdの初期RAMディスクとファイルシステムを処理します。cpioが生き残っている理由の1つは、たとえそれが多少堅牢ではないとしても、tarや他の後継機能よりも軽いことです。

-oまたは--createオプションは、cpioにファイルをアーカイブにコピーするよう指示します。cpioは、標準入力からファイル名のリスト（1行に1つ）を読み取り、アーカイブを標準出力に書き出します。

-iまたは--extractオプションは、cpioに、標準入力からアーカイブを読み取り、そのアーカイブからファイルをコピーするよう指示します。コマンド ラインでファイル名を（*.c のように）パターンとしてリストすると、パターンに一致するアーカイブ内のファイルのみがアーカイブからコピーされます。パターンが指定されていない場合、すべてのファイルが抽出されます。

-tまたは--listオプションは、cpioにアーカイブの内容をリストするように指示します。-vまたは--verboseオプションを追加すると、処理されたファイル名の長いリストが生成されます。

以下にcpioの使用例をいくつか示します。

-oまたは--createを使用してアーカイブを作成する場合：

$ ls | cpio --create -O /dev/st0

-iまたは--extractを使用してアーカイブから抽出する場合：

$ cpio -i somefile -I /dev/st0

-tまたは--listを使用してアーカイブの内容を一覧表示する場合：

$ cpio -t -I /dev/st0

入力（-I device）を指定するか、コマンド ラインでリダイレクトを使用できます。


dumpとrestore
dumpとrestoreユーティリティは、UNIXの初期の頃から存在しており、もともとは最新のハードウェア、ファイルシステム、およびストレージの容量に対応するようには設計されていませんでした。

cpioやtarとは異なり、これらのユーティリティはファイルシステムを直接読み書きします。これにより効率が向上し、タイム スタンプに影響を与えずにバックアップ ファイルを作成できます。

dumpプログラムには、パラメータを設定できる多数のオプションがあります。例えば以下です。

Option       Description
-0-9         Dump level- level 0 is full backup, higher numbers are incremental backups
-B records   Records per volume
-b blocksize K-bytes per record
-f file      Output device or file
-u           Update /etc/dumpdates
-W           Print most recent dump date of each filesystem in /etc/dumpdates

🚩
オプションを利用して値を指定する場合、値をオプションの直後に配置する必要はありませんが、値を指定するオプションと同じ順序で値を指定する必要があります。

dumpにはプラスの面とマイナス面があります。プラス面は次の機能です。

完全または増分バックアップを実行できます。
特定のファイルシステム形式と、それを読み書きする方法を知っています。
完全バックアップの作成時にヘッドの動きを少なくするため、効率的です。
出力テープのサイズと密度、ブロック サイズとカウント、またはその両方を指定できます。
有効なデバイスまたはファイルにダンプできます。デフォルトは/dev/tapeです。
/etc/fstabのパラメータで、何をいつダンプするかを制御できます。

マイナス面は次の機能です。

バックアップには複数のファイルシステム パスが必要です。
ext2、ext3、ext4ファイルシステムでのみ機能します。（他のファイルシステムには、xfsdumpなどの独自のユーティリティがある場合があります。）
マウントされたファイルシステムでは安全に実行できません。

Linuxで使用されているファイルシステムの種類が多いことと、データの正確な保存方法などの詳細を抽象化することが最近の傾向であるため、ファイルシステムへの柔軟性の欠如は、どちらかといえば強い制約になると言えます。

dumpとrestore は、Amandaなどの高レベルのバックアップ プログラム スイートで使用される場合があります。なので、これらのレガシー ツールにある程度精通していると役に立ちます。

restoreは、作成されたダンプから、アーカイブ、テープ、またはファイルを復元するために使用されます。たとえば、現在のディレクトリにダンプされたすべてのファイルを復元する場合、以下のようにします。

$ sudo restore -rvf /tmp/boot_backup

復元する時に便利なオプションは以下のとおりです。

-r
すべてを復元します。ダンプされた内容が読み取られ、完全なコンテンツが現在のディレクトリにロードされます。

-t
指定されたファイルとディレクトリがバックアップに存在する場合、その名前を標準出力に出力します。ファイルが引数に指定されていない場合、バックアップに存在するルート ディレクトリが出力されます。このオプションでは、実際には復元されません。

-x
指定されたファイルとディレクトリを、バックアップから読み出します。指定されたファイルがバックアップに存在するディレクトリと一致する場合、ディレクトリは再帰的に抽出されます。引数が指定されていない場合、バックアップのすべての内容が読み出されます。

-i
このモードでは、バックアップからファイルをインタラクティブに復元できます。バックアップからディレクトリ情報を読み込んだ後、restoreはシェルのようなインターフェイスを提供し、ユーザーはディレクトリ ツリー内を移動して、抽出するファイルを選択できます。

-rと-xを同時に使用することはできません。


mt
mtユーティリティは、磁気テープ デバイスを制御するために使用されます。ほとんどの場合、バックアップと復元の前またはその実行中に、テープの稼働状況の確認や位置設定をするために使用されます。デフォルトでは、mt は環境変数TAPEの内容を使います。また -f deviceオプションで指定されたテープ ドライブを使用することもできます。

rootユーザーのみがmtを使用できることに留意してください。構文は次のとおりです。

mt [-h] [-f device] operation [count] [arguments...]

構文の内容は以下のとおりです。

-h：使用法を表示します（ヘルプ）。
-f device：テープ デバイスを指定します。
operation：テープ操作を指定します。
count：繰り返すことができる回数、一部の操作に使用されます（デフォルトは1）。
arguments：一部の操作に使用されます。

以下に、mtの使用例をいくつか示します。

テープ デバイスに関する状態情報を表示する場合：

$ mt status

テープを巻き戻す場合：

$ mt rewind

テープを消去する場合：

$ mt erase

現在のアーカイブの最後に移動する場合：

$ mt fsf


バックアップ プログラム
独自のアプリケーションやストレージ ベンダーが提供するアプリケーション、オープンソース アプリケーションなど、Linuxで利用可能なバックアップ プログラム スイートはいろいろあります。

各ボックスをクリックして展開し、いくつかの有名なバックアップ プログラムについて学びます。

バックアップ プログラム

Amanda
Amanda（Advanced Maryland Automatic Network Disk Archiver）はネイティブ ユーティリティ（tarとdumpを含む）を使用しますが、はるかに堅牢で制御しやすいです。Amandaは一般的に、標準リポジトリから入手して、エンタープライズLinuxシステムで利用できます。

Bacula
Baculaは、異種ネットワーク上の自動バックアップ用に設計されています。かなり複雑なので、使用は経験豊富な管理者のみにすることを（作成者は）推奨しています。Baculaは通常、標準リポジトリを通じて エンタープライズLinuxシステムで利用できます。

Clonezilla
Clonezillaは非常に堅牢なディスク クローン プログラムです。ディスクのイメージを作成して展開し、バックアップを復元したり、多くのマシンのインストールに使用できるイメージを提供できます。

プログラムには2つのバージョンがあります。単一マシンのバックアップとリカバリに適したClonezilla liveと、同時に多くのコンピュータにクローンを作成できるサーバー エディションのClonezilla SEです。Clonezillaの使用はそれほど難しくなく、非常に柔軟で、（Linux だけでなく）多くのオペレーティング システム、ファイルシステムの種類、ブートローダーをサポートしています。


演習

課題 40.1: tarを使ってバックアップする

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 40.1: Using tar for Backup

1.  Create a directory called backup and in it place a compressed tar archive of all the files under /usr/include, with the highest level directory being include. You can use any compression method (gzip, bzip2 or xzip).
2.  List the files in the archive.
3.  Create a directory called restore and unpack and decompress the archive.
4.  Compare the contents with the original directory the archive was made from.

Solution 40.1

1.$ mkdir /tmp/backup
$ cd /usr ; tar zcvf /tmp/backup/include.tar.gz include
$ cd /usr ; tar jcvf /tmp/backup/include.tar.bz2 include
$ cd /usr ; tar Jcvf /tmp/backup/include.tar.xz include
または
$ tar -C /usr -zcf include.tar.gz include
$ tar -C /usr -jcf include.tar.bz2 include
$ tar -C /usr -Jcf include.tar.xz include

Notice the efficacy of the compression between the three methods:

$ du -sh /usr/include
55M        /usr/include

2.$ ls -lh include.tar.*
c7:/tmp/backup>ls -lh
total 17M
-rw-rw-r-- 1 coop coop 5.3M Jul 18 08:17 include.tar.bz2
-rw-rw-r-- 1 coop coop 6.7M Jul 18 08:16 include.tar.gz
-rw-rw-r-- 1 coop coop 4.5M Jul 18 08:18 include.tar.xz
c7:/tmp/backup>

3.$ tar tvf include.tar.xz
qdrwxr-xr-x root/root         0 2014-10-29 07:04 include/
-rw-r--r-- root/root     42780 2014-08-26 12:24 include/unistd.h
-rw-r--r-- root/root       957 2014-08-26 12:24 include/re_comp.h
-rw-r--r-- root/root     22096 2014-08-26 12:24 include/regex.h
-rw-r--r-- root/root      7154 2014-08-26 12:25 include/link.h
.....

Note it is not necessary to give the j,J, orzoption when decompressing;tar is smart enough to figure out what is needed.

4.$ cd .. ; mkdir restore ; cd restore
$ tar xvf ../backup/include.tar.bz2
include/
include/unistd.h
include/re_comp.h
include/regex.h
include/link
.....
$ diff -qr include /usr/include


課題 40.2: cpioを使ってバックアップする

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 40.2: Using cpio for Backup

We are going to do essentially the same exercise now, but using cpio in place of tar. We’ll repeat the slightly altered instructions for ease of use.

1.  Create a directory calledbackupand in it place a compressed cpio archive of all the files under /usr/include, with the highest level directory being include. You can use any compression method (gzip, bzip2 or xzip).

2.  List the files in the archive.
3.  Create a directory called restore and unpack and decompress the archive.
4.  Compare the contents with the original directory the archive was made from.

Solution 40.2

1.$ (cd /usr ; find include | cpio -c -o > /home/student/backup/include.cpio)
82318 blocks
or to put it in a compressed form:

$ (cd /usr ; find include | cpio -c -o | gzip -c > /home/student/backup/include.cpio.gz)
82318 blocks

$ ls -lh include*
total 64M
-rw-rw-r-- 1 coop coop  41M Nov  3 15:26 include.cpio
-rw-rw-r-- 1 coop coop 6.7M Nov  3 15:28 include.cpio.gz
-rw-rw-r-- 1 coop coop 5.3M Nov  3 14:44 include.tar.bz2
-rw-rw-r-- 1 coop coop 6.8M Nov  3 14:44 include.tar.gz
-rw-rw-r-- 1 coop coop 4.7M Nov  3 14:46 include.tar.xz

2.$ cpio -ivt < include.cpio
drwxr-xr-x  86 root     root            0 Oct 29 07:04 include
-rw-r--r--   1 root     root        42780 Aug 26 12:24 include/unistd.h
-rw-r--r--   1 root     root          957 Aug 26 12:24 include/re_comp.h
-rw-r--r--   1 root     root        22096 Aug 26 12:24 include/regex.h
.....

Note the redirection of input; the archive is not an argument. One could also do:

$ cd ../restore
$ cat ../backup/include.cpio | cpio -ivt
$ gunzip -c include.cpio.gz | cpio -ivt

3.$ rm -rf include
$ cpio -id < ../backup/include.cpio
$ ls -lR include
または
$ cpio -idv < ../backup/include.cpio
$ diff -qr include /usr/include


課題 40.3: rsyncを使ってバックアップする

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 40.3: Using rsync for Backup

1.  Using rsync, we will again create a complete copy of /usr/include in your backup directory:

$ rm -rf include
$ rsync -av /usr/include .
sending incremental file list
include/
include/FlexLexer.h
include/_G_config.h
include/a.out.h
include/aio.h
.....

2.  Let’s run the command a second time and see if it does anything:

$ rsync -av /usr/include .
sending incremental file list

sent 127398 bytes  received 188 bytes  255172.00 bytes/sec
total size is 41239979  speedup is 323.23

3.  One confusing thing about rsync is you might have expected the right command to be:

$ rsync -av /usr/include include
sending incremental file list
...

However, if you do this, you’ll find it actually creates a new directory,include/include!

4.  To get rid of the extra files you can use the --delete option:

$ rsync -av --delete /usr/include .
sending incremental file list
include/
deleting include/include/xen/privcmd.h
deleting include/include/xen/evtchn.h
....
deleting include/include/FlexLexer.h
deleting include/include/

sent 127401 bytes  received 191 bytes  85061.33 bytes/sec
total size is 41239979  speedup is 323.22

5.  For another simple exercise, remove a subdirectory tree in your backup copy and then run rsync again with and without the --dry--run option:

$ rm -rf include/xen
$ rsync -av --delete --dry-run /usr/include .
sending incremental file list include/
include/xen/
include/xen/evtchn.h
include/xen/privcmd.h

sent 127412 bytes  received 202 bytes  255228.00 bytes/sec
total size is 41239979  speedup is 323.16 (DRY RUN)

$ rsync -av --delete  /usr/include .

6.  A simple script with a good set of options for using rsync:

script using rsync

#!/bin/sh
set -x

rsync --progress -avrxH -e"ssh -c blowfish" --delete $*

which will work on a local machine as well as over the network.  Note the important -x option which stops rsync from crossing filesystem boundaries.

Extra Credit
For more fun, if you have access to more than one computer, try doing these steps with source and destination on different machines.


知識チェック

「第40章 - バックアップとリカバリの方法」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 40.1
次の問題については、ツールの機能のみを考慮し、パイプ「|」やスクリプトで複数のツールを接続して何ができるかは考えなくて良いです。同じツールを複数回呼び出すなど、特殊な使用をするケースも考えなくて良いです。tarは、複数のファイルのアーカイブを作成できます。True or False?

A. True
B. False

問題 40.2
tarには、ネットワークを介してデータをやり取りする機能が組み込まれています。True or False?

A. True
B. False

問題 40.3
tarは、/dev/sdaなどのディスクを読み取ることができます。True or False?

A. True
B. False

問題 40.4
tarには圧縮機能が組み込まれています。True or False?

A. True
B. False

問題 40.5
tarには、増分バックアップのための機能が組み込まれています。True or False?

A. True
B. False

問題 40.6
tarには、複数のファイルをコピーするための機能が組み込まれています。True or False?

A. True
B. False

問題 40.7
ddは、複数のファイルのアーカイブを作成できます。True or False?

A. True
B. False

問題 40.8
ddには、ネットワーク経由でデータをやり取りする機能が組み込まれています。True or False?

A. True
B. False

問題 40.9
ddは、/dev/sdaなどのrawディスクを読み取ることができます。True or False?

A. True
B. False

問題 40.10
ddには圧縮機能が組み込まれています。True or False?

A. True
B. False

問題 40.11
ddには、増分バックアップのための機能が組み込まれています。True or False?

A. True
B. False

問題 40.12
ddには、複数のファイルをコピーするための機能が組み込まれています。True or False?

A. True
B. False

問題 40.13
rsyncは、複数のファイルのアーカイブを作成できます。True or False?

A. True
B. False

問題 40.14
rsyncには、ネットワーク経由でデータをやり取りする機能が組み込まれています。True or False?

A. True
B. False

問題 40.15
rsyncは、/dev/sdaなどのrawディスクを読み取ることができます。True or False?

A. True
B. False

問題 40.16
rsyncには圧縮機能が組み込まれています。True or False?

A. True
B. False

問題 40.17
rsyncには、増分バックアップのための機能が組み込まれています。True or False?

A. True
B. False

問題 40.18
rsyncには、複数のファイルをコピーする機能が組み込まれています。True or False?

A. True
B. False

