<!--
     The FreeBSD Documentation Project
     The FreeBSD Japanese Documentation Project

     Original revision: 1.49
     $FreeBSD$
-->

<chapter id="backups">
  <title>バックアップ</title>

  <sect1 id="backups-synopsis">
    <title>この章では</title>

    <para>この章ではデータのバックアップ方法とバックアップの作成に
      使われるプログラムについて扱います。</para>
  </sect1>

  <sect1 id="backups-tapebackups">
    <title>テープメディア</title>

    <indexterm><primary>テープメディア(tape media)</primary></indexterm>
    <para>一般的なテープメディアには 4mm、8mm、QIC、ミニカートリッジ、
      DLT があります。</para>

    <sect2 id="backups-tapebackups-4mm">
      <title>4mm (DDS: Digital Data Storage)</title>

      <indexterm>
        <primary>テープメディア(tape media)</primary>
	<secondary>DDS (4mm) テープ</secondary>
      </indexterm>
      <indexterm>
        <primary>テープメディア(tape media)</primary>
	<secondary>QIC テープ</secondary>
      </indexterm>
      <para>4mm テープはワークステーションのバックアップメディアとして
	QIC から置き換えられつつあります。この傾向は
	QIC ドライブの製造のリーダであった Archive を Conner が買収し
	QIC ドライブの製造を中止したことで加速しました。
	4mm ドライブは小型で静かですが 8mm
	ドライブの持っているような信頼性の評判はありません。
	カートリッジは 8mm カートリッジよりも安価で小型 (3 x 2 x 0.5
	インチ; 76 x 51 x 12 mm) です。4mm ドライブ は
	8mm 同様にヘリカルスキャン (訳注:
	VTR と同様の回転ヘッドを使う方式)
	を使用しているという理由でヘッドの寿命は短いです。</para>

      <para>これらのドライブのデータスループットは
	150kB/s 程度から最大で 500kB/s 程度の範囲です。データ容量は
	1.3GB から 2.0GB です。ハードウェア圧縮が多くのドライブで可能で、
	およそ 2 倍の容量になります。
	マルチドライブテープライブラリユニットは 1 つの筐体に
	6 ドライブを持つことができ自動的にテープを交換します。
	ライブラリの容量は 240GB に達します。</para>

      <para>現在の DDS-3 規格では、12GB (圧縮時 24GB)
        までのテープ容量をサポートしています。
      </para>

      <para>4mm ドライブは 8mm ドライブ同様にヘリカルスキャンを使います。
	ヘリカルスキャンの利点と欠点は 4mm ドライブ と 8mm
	ドライブ共通です。</para>

      <para>テープの寿命は 2000 回のパスあるいは 100
	回のフルバックアップです。</para>
    </sect2>

    <sect2 id="backups-tapebackups-8mm">
      <title>8mm (Exabyte)</title>

      <indexterm>
        <primary>テープメディア(tape media)</primary>
	<secondary>Exabyte (8mm) テープ</secondary>
      </indexterm>
      <para>8mm テープは SCSI
	テープドライブとして最もよく使われているもので、
	データ交換用として最良の選択です。ほとんどのサイトには Exabyte
	の 2GB 8mm テープドライブがあるでしょう (訳注: Unix
	ワークステーションを何台も置いているようなサイトには 1
	台くらいはあるというような意味です)。8mm
	ドライブは信頼性が高く、使いやすく、静かです。
	カートリッジは安価で小型です (4.8 x 3.3 x 0.6 インチ; 122 x 84
	x 15 mm)。欠点は、テープとヘッドの相対的な速度が高速なために
	比較的ヘッドとテープの寿命が短いことです。</para>

      <para>データスループットは 250kB/s 程度から 500kB/s
	程度の範囲です。データ容量は 300MB から 7GB です。
	ハードウェア圧縮が多くのドライブで可能で、およそ 2
	倍の容量になります。単一のユニットのドライブから、1
	つの筐体に 6 台のドライブと 120
	巻のテープを持ったマルチドライブテープライブラリまで
	利用することができます。ライブラリではテープはユニットにより
	自動的に交換されます。ライブラリの容量は 840GB
	以上に達します。</para>

      <para>Exabyte 社製の <quote>Mammoth</quote> というモデルは、
        テープ一本あたり 12GB (圧縮時 24GB) をサポートしています。
        このドライブの価格は、通常のテープドライブの約 2 倍です。
      </para>

      <para>データはヘリカルスキャンを使ってテープに記録されます。
	ヘリカルスキャン方式ではヘッドはメディアに対してある傾き
	(約 6 度) に配置されます。テープはヘッドのある円筒の周の
	270 度にわたって接触します。テープが円筒面を走行する間、
	円筒は回転しています。この結果、
	高密度のデータのつまったトラックは、
	狭い間隔でテープの上端と下端の間を斜めに横切ります。</para>
    </sect2>

    <sect2 id="backups-tapebackups-qic">
      <title>QIC</title>

      <indexterm>
        <primary>テープメディア (tape media)</primary>
	<secondary>QIC-150</secondary>
      </indexterm>            

      <para>QIC-150 テープとドライブはたぶん最も一般的に使われている
	ドライブとメディアでしょう。QIC
	テープドライブは現実的なバックアップドライブとして
	少なくとも高価なものではありません。
	欠点はメディアのコストです。QIC テープは 8mm や 4mm
	テープに比較して GB あたりのデータの保存で 5 倍ほど高価です。
	しかしあなたの必要とする量が半ダース程のテープで十分であれば、
	QIC は正しい選択となるかもしれません。QIC は
	<emphasis>最も</emphasis>一般的なテープドライブです。
	すべてのサイトに QIC ドライブのどれかの容量のものがあります。
	問題は、QIC は同じようなテープ (まったく同じ場合もある)
	に多様な記録密度があることです。QIC
	ドライブは静かではありません。これらのドライブはデータ記録を
	開始する前に音をたててシークしますし、リード、ライト、
	シークの時にはっきりと聞こえる音を出します。QIC
	テープの大きさは (6 x 4 x 0.7 インチ; 152 x 102 x 17 mm)。
	<link
	  linkend="backups-tapebackups-mini">ミニカートリッジ</link>
	で使われている 1/4 インチ幅のテープについては別に議論します。
	テープライブラリやチェンジャはありません。</para>

      <para>データスループットは 150kB/s から 500kB/s の範囲です。
	データ容量の範囲は 40MB から 15GB です。ハードウェア圧縮が
	最近の多くのドライブで使えるようになっています。QIC ドライブは
	DAT ドライブに置き換えられつつあり、
	あまり頻繁には利用されなくなっています。</para>

      <para>データは複数のトラックにわかれてテープに記録されます。
	トラックはテープメディアの
	長さ方向の一端からもう一方の端までです。(訳注: 1 トラックの
	read/write が終わるとテープの走行方向を反転させ次のトラックの
	read/write を行います) トラックの数と、
	それに対応するトラックの幅はテープの容量によって変わります。
	すべてではありませんがほとんどの最近のドライブは
	少なくとも読み出しについては (場合によっては書き込みも)
	下位互換性があります。QIC
	はデータの安全性についてはよいといわれています
	(ヘリカルスキャンドライブに比べて機構は単純でより丈夫です)。
      </para>

      <para>テープは 5000 回のバックアップで寿命となるでしょう。</para>
    </sect2>

    <sect2 id="backups-tapebackups-mini">
      <title>XXX* ミニカートリッジ</title>

      <para></para>
    </sect2>
    
    <sect2 id="backups-tapebackups-dlt">
      <title>DLT</title>

      <indexterm>
        <primary>テープメディア(tape media)</primary>
	<secondary>DLT</secondary>
      </indexterm>            

      <para>DLT はここに示したドライブのタイプの中で
	最高速のデータ転送レートです。1/2 インチ (12.5mm)
	テープが単リールのカートリッジ (4 x 4 x 1 インチ; 100 x 100 x
	25 mm) に入っています。
	カートリッジのひとつの側面全体がスイングゲートになっています。
	ドライブの機構がこのゲートを開け、テープリーダを引き出します。
	テープリーダには楕円形の穴があり、
	ドライブがテープを引っ掛けるのに使います。
	巻き取りのためのリールはドライブの中にあります。
	ここに挙げた他のカートリッジはすべて  (9
	トラックテープはただ一つの例外です)
	送りだしリールと巻き取りリールの両方がカートリッジの中に
	あります。</para>

      <para>データスループットは約 1.5MB/s で、4mm、8mm、QIC
	テープドライブの 3 倍です。データ容量は単一のドライブで 10GB から
	20GB の範囲です。
	マルチテープチェンジャ、マルチテープドライブ、5 から
	900 巻のテープを 1 から 20 ドライブで扱う
	マルチドライブテープライブラリがあり、50GB から 9TB
	の容量が得られます。</para>

      <para>圧縮機能により、DLT Type IV フォーマットは
         70GB までの容量をサポートします。</para>

      <para>データは ( QIC テープのように)
	テープの走行方向と並行に複数あるトラックへ記録されます。2
	つのトラックに同時書き込みを行います。Read/Write
	ヘッドの寿命は比較的長いと言えます。
	テープの走行が止まればヘッドと
	テープの間の相対運動はありません。</para>
    </sect2>

    <sect2>
      <title id="backups-tapebackups-ait">AIT</title>

      <indexterm>
        <primary>テープメディア(tape media)</primary>
	<secondary>AIT</secondary>
      </indexterm>            

      <para>AIT は、Sony が発表した新しいフォーマットで、
        テープ一本あたり 50GB (圧縮時) の容量を持っています。
        テープには、記録データ内容の索引情報が記録可能な
        メモリチップが内蔵されています。ドライブがこの索引情報を読みとることで、
        テープのどの部分にどのファイルが存在するかを
        高速に調べることができるようになっています。
        従来のドライブは、この処理に数分の時間を必要としていました。
        直接テープのメモリチップと通信することでテープ内容を画面表示する
        SAMS:Alexandria のようなソフトウェアを使うことで、40 を超える
        ATI テープライブラリを操作できるのはもちろんのこと、
        どのテープのどこに、どのファイルがバックアップされているのか調べたり、
        正しいテープをセットしたり、
        テープ上のデータをリストアしたりすることが可能です。
        </para>

      <para>このようなテープライブラリにかかる費用は $20,000 台です。
        業務用でないものはもう少し安価でしょう。
        </para>
    </sect2>

    <sect2>
      <title>新品のテープを最初に使う場合</title>

      <para>新品の完全な空テープを読もうとしたり書き込もうとすると処理
	は失敗するでしょう。
	次のようなコンソールメッセージが出るでしょう。</para>

      <screen>sa0(ncr1:4:0): NOT READY asc:4,1
st0(ncr1:4:0):  Logical unit is in process of becoming ready</screen>

      <para>テープに識別ブロック (Identifire Block:block number 0)
	がありません。QIC-525 標準の採用されている
	QIC テープドライブのすべてで識別ブロックをテープに書きます。
	2 つの解決方法があります。</para>

      <para>(訳注: 方法 1)<command>mt fsf 1</command>
	によってテープドライブは識別ブロックをテープに書きます。</para>

      <para>(訳注:
	方法 2) フロントパネルのボタンを押してテープをとりだします。
      </para>

      <para>再びテープを入れ、データをテープに <command>dump</command> します。</para>

      <para><command>dump</command> はそのうちに <literal>DUMP: End of tape
	  detected</literal> と表示し、コンソールには
	<literal>HARDWARE FAILURE info:280
	  asc:80,96</literal> と表示されるでしょう。</para>

      <para><command>mt
	  rewind</command> を使ってテープを巻戻します。</para>

      <para>この次からはテープの操作は成功するでしょう。</para>
    </sect2>
  </sect1>

  <sect1 id="backup-programs">
    <title>バックアッププログラム</title>

    <indexterm><primary>バックアッププログラム(backup software)</primary></indexterm>

    <para>よく使われる3つのプログラムは &man.dump.8;、&man.tar.1;、
	&man.cpio.1; です。</para>

    <sect2>
      <title>dump と restore</title>

      <indexterm>
        <primary>バックアッププログラム(backup software)</primary>
	<secondary>dump / restore</secondary>
      </indexterm>      
      <indexterm><primary><command>dump</command></primary></indexterm>      
      <indexterm><primary><command>restore</command></primary></indexterm>

      <para>Unix で古くから使われているバックアッププログラムは
        <command>dump</command> と <command>restore</command> です。
	これらはディスクドライブをディスクブロックの集まりとして、
        ファイルシステム上につくられるファイル、
        リンク、ディレクトリといった概念よりも低レベルで扱います。
	<command>dump</command> はデバイスやファイルシステム全体をバックアップするもので、
	ファイルシステムの一部や、
        複数のファイルシステムにまたがるディレクトリツリーの一部だけを
        バックアップすることはできません。
        <command>dump</command> はファイルやディレクトリではなく、
        ファイルやディレクトリを構成する生のデータブロックをテープに記録します。</para>

      <note>
        <para>ルートディレクトリで <command>dump</command> を使った場合、
          <filename>/home</filename> や <filename>/usr</filename> など、
          他の多くのディレクトリはバックアップされません。
          これは、上にあげたようなディレクトリが通常、
          他のファイルシステムへのマウントポイントであったり、
          他のファイルシステムへのシンボリックリンクとなっているためです。</para>
      </note>

      <para><command>dump</command> には初期の ATT UNIX のバージョン 6 (1975
	年ごろ) に由来する癖が残っています。
        デフォルトのパラメータは 9 トラックテープ (6250 bpi)
	に適したものになっていて、
        現在の高密度メディア (最大 62,182 ftpi) に適していません。
	現在のテープドライブの容量を有効に利用するため、
	これらのデフォルト値をコマンドラインで必ず置き換える必要があります。</para>

      <indexterm><primary><filename>rhosts</filename></primary></indexterm>
      <para>また、<command>rdump</command> と <command>rrestore</command> を用いると、
        他のコンピュータに接続されたテープドライブを使い、
        ネットワーク経由でデータをバックアップすることも可能です。
	どちらのプログラムもリモートテープドライブにアクセスするために
	<command>rcmd</command> と <command>ruserok</command> に依存しています。
	このためユーザがバックアップを実行するためには
	<literal>rhosts</literal> によるリモートアクセスが必要です。
	<command>rdump</command> と <command>rrestore</command>
	の引数はリモートコンピュータに適切なものを用います。
	(例えば
	FreeBSD コンピュータより <hostid>komodo</hostid> という名前の
	Sun に接続されている Exabyte テープドライブへ
	<command>/sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nrsa8
	  /dev/rda0a 2>&amp;1</command> として
	<command>rdump</command>したような場合の restore に使います)
	警告: セキュリティは
	<literal>rhosts</literal> の管理にかかっています。
	あなたの状況を注意深く調べてください。</para>

      <para><command>ssh</command> を用いると
        <command>rdump</command> と <command>rrestore</command>
        をより安全な形で利用することができます。</para>

      <example>
	<title><application>ssh</application> 経由で <command>rdump</command> を使う</title>

	<screen>&prompt.root; <userinput>/sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \
          targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz</userinput></screen>

      </example>
    </sect2>

    <sect2>
      <title><command>tar</command></title>

      <indexterm>
        <primary>バックアッププログラム (backup software)</primary>
        <secondary><command>tar</command></secondary>
      </indexterm>
      <para><command>tar</command> AT&amp;T Unix のバージョン 6 (1975 ごろ)
	にさかのぼる事ができます。<command>tar</command>
	はファイルシステムと協調して機能し、
	ファイルやディレクトリをテープに書きます。<command>tar</command> は
	  &man.cpio.1;
	で使えるようなフルレンジのオプションは持ちませんが
	  <command>cpio</command>
	で使うような奇妙なコマンドパイプラインは必要ありません。</para>

      <indexterm><primary><command>tar</command></primary></indexterm>      
      <para>大部分の <command>tar</command>
	にはネットワーク経由のバックアップの機能はありませんが、
	FreeBSD で使用されている GNU の <command>tar</command> は、
	<command>rdump</command>
	とおなじ構文でリモートデバイスを扱うことができます。
	<hostid>komodo</hostid>
	というホスト名の Sun に繋いである Exabyte
	のテープデバイスに対して <command>tar</command> を実行するには、
	次のようにします。
	<command>/usr/bin/tar cf komodo:/dev/nrsa8 。
	  2>&amp;1</command> リモートデバイスをサポートしていない tar
	を使用している場合は、パイプラインと <command>rsh</command> を使うことで、
	リモートテープデバイスにデータを送る事ができます。
	</para>

      <screen>&prompt.root; <userinput>tar cf - . | rsh <replaceable>hostname</replaceable> dd of=<replaceable>tape-device</replaceable> obs=20b</userinput></screen>

      <para>もしあなたがネットワークを越えるバックアップのセキュリティに
	困っているなら &man.rsh.1; の代わりに &man.ssh.1; を使うべきです。</para>
    </sect2>

    <sect2>
      <title><command>cpio</command></title>

      <indexterm>
        <primary>バックアッププログラム (backup software)</primary>
        <secondary><command>cpio</command></secondary>
      </indexterm>
      <para>&man.cpio.1; は本来、Unix
	ファイルを磁気メディアで交換するためのプログラムです。
	  <command>cpio</command> はバイトスワッピング、
	多くの異なるアーカイブフォーマットの書き込みのオプション
	(それ以外にも多数のオプションがあります) があり、
	パイプで他のプログラムにデータを渡す事もできます。
	この最後に挙げた特徴により、<command>cpio</command>
	はインストールメディアについては優れた選択です。<command>cpio</command>
	は <filename>stdin</filename> からの入力でなければならず、
	ディレクトリツリーの探索や
	ファイルリストについての機能はありません。</para>

      <indexterm><primary><command>cpio</command></primary></indexterm>      
      <para>&man.cpio.1;
	はネットワーク経由のバックアップの機能はありません。
	リモートテープドライブにはパイプラインと &man.rsh.1;
	を使って送る事ができます。</para>

      <screen>&prompt.root; <userinput>for f in <replaceable>directory_list; do</replaceable></userinput>
<userinput>find $f >> backup.list</userinput>
<userinput>done</userinput>
&prompt.root; <userinput>cpio -v -o --format=newc < backup.list | ssh <replaceable>user</replaceable>@<replaceable>host</replaceable> "cat > <replaceable>backup_device</replaceable>"</userinput></screen>

      <para><replaceable>directory_list</replaceable>
        にはバックアップしたいディレクトリのリスト、
	<replaceable>user</replaceable>@<replaceable>host</replaceable>
        にはバックアップを実行するユーザ/ホスト名の組合せ、
	<replaceable>backup_device</replaceable> には
        バックアップ内容を保存する場所
	(たとえば <filename>/dev/nrsa0</filename>) を指定します。</para>
    </sect2>

    <sect2>
      <title><command>pax</command></title>

      <indexterm>
        <primary>バックアッププログラム (backup software)</primary>
        <secondary><command>pax</command></secondary>
      </indexterm>
      <indexterm><primary><command>pax</command></primary></indexterm>
      <indexterm><primary>POSIX</primary></indexterm>
      <indexterm><primary>IEEE</primary></indexterm>
      <para>&man.pax.1; は <command>tar</command> と
	<command>cpio</command> に対する IEEE/POSIX の回答です。
	長年の間、様々なバージョンの <command>tar</command> や
	<command>cpio</command> は、
	互いにわずかながら非互換性を有していました。
	各々をしらみ潰しに標準化する代わりに、POSIX
	は新しいアーカイブユーティリティを作ることにしました。
	<command>pax</command>
	は専用に開発された新しいフォーマットに加えて、いくつもの cpio
	や tar のフォーマットの読み書きに対応しようと試みています。
	コマンド群は <command>tar</command> よりも
	<command>cpio</command> の方にいくぶん似ています。</para>
    </sect2>

    <sect2 id="backups-programs-amanda">
      <title><application>Amanda</application></title>

      <indexterm>
        <primary>バックアッププログラム (backup software)</primary>
        <secondary><application>Amanda</application></secondary>
      </indexterm>      
      <indexterm><primary><application>Amanda</application></primary></indexterm>

      <para>
        <application>Amanda</application> (Advanced Maryland Network Disk Archiver)
	は単一のプログラムではなくクライアント /
	サーバ型のバックアップシステムです。Amanda サーバは、Amanda
	クライアントであるネットワークで
	サーバに接続された複数のコンピュータから
	一つのテープドライブへバックアップをおこないます。
	このような場合の一般的な問題はいくつもの大容量の
	ディスクからデータディレクトリをテープにバックアップするには
	時間がかかりすぎてしまうという事です。Amanda
	はこの問題を解決します。Amanda
	は同時に複数のファイルシステムのバックアップをおこなう時に
	「ホールディングディスク」を使う事ができます。
	Amanda の設定ファイルに書いたすべてのファイルシステムの
	フルバックアップを特定の間隔でとるために「アーカイブセット」
	と呼ばれるテープグループを作ります。
	これには夜間に作られるすべてのファイルシステムの増分
	(あるいは差分として) のバックアップも含みます。
	障害の起きたファイルシステムの回復には最も新しい
	フルバックアップと増分のバックアップが必要です。</para>

      <para>設定ファイルでバックアップのコントロールと Amanda
	によるネットワークトラフィック量を設定します。Amanda
	はデータをテープに書くのにバックアッププログラムの
	いずれかを使うでしょう。Amanda
	はその一部分でもパッケージでも利用可能ですが、
	デフォルトではインストールされません。</para>
    </sect2>

    <sect2>
      <title>何もしない</title>

      <para><quote>何もしない</quote>
	というのはコンピュータのプログラムではありませんが、
	バックアップの戦略として最も広く採用されている物です。
	これには初期投資が必要ありません。
	したがわなければならないバックアップスケジュールもありません。
	ただ何もしないだけです。もしデータに何かが起きたら、
	苦笑いして耐えてください。</para>

      <para>あなたにとって時間やデータの価値が少ないか
	あるいはまったくないのであれば <quote>何もしない</quote>
	のはあなたのコンピュータに最も適した
	バックアッププログラムでしょう。しかし注意してください。Unix
	は便利なツールです。6 ヶ月も使っていれば価値のあるファイルの
	山ができ上がっているでしょう。</para>

      <para><quote>何もしないこと</quote> は
	<filename>/usr/obj</filename> など、
	コンピュータが同じものをもう一度作り直すことのできる
	ディレクトリツリーに対して適した方法です。
	一つの例として、このハンドブックの HTML 版、PostScript
        版を構成するファイルが考えられます。
        これらは両方とも SGML ファイルから生成されたものなので、
        HTML 版と PostScript 版のバックアップをとる必要はありません。
        一方、SGML ファイルは定期的にバックアップが行なわれています。</para>
    </sect2>

    <sect2>
      <title>どのバックアッププログラムが最適でしょう?</title>

      <indexterm>
        <primary>LISA</primary>
      </indexterm>

      <para><emphasis>定期的に</emphasis> <command>dump</command> しましょう。
	Elizabeth D. Zwicky はここで検討したプログラムすべてについて
	拷問的なテストをおこないました。すべてのデータと
	Unixファイルシステムの状態すべてを保存するには明らかに
	  &man.dump.8; でしょう。Elizabeth
	は大きく変化に富んだ異常な状態
	(いくつかはあまり異常でもない状態のものもあります)
	になっているファイルシステムで、
	それぞれのプログラムでファイルシステムの
	バックアップとリストアを行ってテストしました。
	特色のある状態には、ホールを持つファイル、
	ホールとヌルブロックを持つファイル、
	奇妙な文字をファイル名に持つファイル、読み出し不可、
	書き込み不可のファイル、デバイスファイル、
	バックアップ中にファイルのサイズを変更する、
	バックアップ中にファイルの作成/削除をおこなうなどがあります。
	彼女は 1991 年 10 月の LISA V で結果の発表をしています。<ulink
	  url="http://reality.sgi.com/zwicky_neu/testdump.doc.html">torture-testing Backup and Archive Programs</ulink> を参照してください。</para>
    </sect2>

    <sect2>
      <title>緊急時のリストア手順</title>

      <sect3>
	<title>災難の起きる前に</title>

	<para>起き得るどのような災難に対しても以下の
	  4 ステップだけが必要な準備です。</para>

	<indexterm>
    <primary><command>disklabel</command></primary>
  </indexterm>	    

	<para>ステップ 1 では、
	  ファイルシステムテーブル (<filename>/etc/fstab</filename>)
	  や起動メッセージで示されるすべてのディスクの
	  disklabel をそれぞれ 2 コピーづつプリント (例えば
	  <command>disklabel da0 | lpr</command> を実行します)
	  します。</para>

	<indexterm><primary>fix-it floppies</primary></indexterm>	    

	<para>ステップ 2 では、<filename>boot.flp</filename> と
	  <filename>fixit.flp</filename>
	  にそのシステムのすべてのデバイスドライバが
	  含まれているか確認します。最も簡単な確認の方法は、
	  フロッピディスクをドライブに入れて再起動し、
	  起動メッセージを確認することです。
	  あなたのシステムのデバイスがすべて含まれ、機能していれば、
	  step 3 へ飛んでください。</para>

	<para>そうでないなら、
	  そのシステムのすべてのディスクをマウントでき、
	  テープドライブにもアクセスできる
	  2 種類のカスタム起動フロッピディスクを作る必要があります。
	  これらのフロッピディスクには <command>fdisk</command>、<command>disklabel</command>、
	    <command>newfs</command>、<command>mount</command>、
	  と利用したいバックアッププログラムが
	  入っていなければなりません。
	  これらのプログラムはスタティックリンクされた
	  プログラムである必要があります。<command>dump</command>
	  を使うのであればフロッピディスクに <command>restore</command>
	  を入れる必要があります。</para>

	<para>ステップ 3 では、通常の方法でバックアップを作ります。
	  最新のバックアップの後でおこなわれた変更は
	  回復することはできません。
	  バックアップテープにライトプロテクトをしてください。</para>

	<para>ステップ 4 では、フロッピディスク
	  (<filename>boot.flp</filename> と
	  <filename>fixit.flp</filename> あるいはステップ
	  2 で作った 2 枚のカスタム起動フロッピディスクです)
	  とバックアップテープのテストをします。
	  手順のノートを作りましょう。
	  このノートは起動フロッピディスク、
	  バックアップテープに入れておきプリントアウトしておきます。
	  あなたがリストアをおこなうような時は
	  おそらく錯乱状態でしょうからこのノートはバックアップを
	  破壊してしまうようなことを防ぐのに役立つでしょう
	  (どのようにして破壊するって? <command>tar xvf
	    /dev/rsa0</command> とするかわりに偶然 <command>tar cvf
	    /dev/rsa0</command>
	  とタイプしてバックアップテープに上書きしてしまうかも
	  しれません)。</para>

	<para>訳注: 上書きはライトプロテクトをしておけば防げますが、
	  なんらかの原因でプロテクトがはずれているかもしれません。
	  ちなみに訳者の経験から言えば上のようなミスタイプは
	  結構起きます。</para>

	<para>安全性を増すために、
	  毎回起動フロッピディスクを作り、2
	  巻のバックアップテープを取ります。
	  一方を離れた場所に保管します。
	  離れた場所は同じ建物の地下室ではいけません。
	  世界貿易センタービルにあった数多くの会社は
	  苦い経験よりこの教訓を得ました。
	  離れた場所とはコンピュータやディスクドライブから
	  かなり離れていて物理的に分離されていなければなりません。</para>

	<example>
	  <title>起動フロッピディスクを作るスクリプトの一例</title>

	<programlisting><![ CDATA [#!/bin/sh
#
# create a restore floppy	リストアフロッピディスクの作成
#
# format the floppy		フロッピディスクのフォーマット
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin

fdformat -q fd0
if [ $? -ne 0 ]
then
	echo "Bad floppy, please use a new one"
	exit 1
fi

# place boot blocks on the floppy	フロッピディスクに起動ブロックを書く
#
disklabel -w -B /dev/fd0c fd1440

#
# newfs the one and only partition	ただ 1 つのパーティションを newfs
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

#
# mount the new floppy		新しいフロッピディスクをマウント
#
mount /dev/fd0a /mnt

#
# create required directories	必要なディレクトリの作成
#
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt			# for the root partition
mkdir /mnt/tmp
mkdir /mnt/var

#
# populate the directories
#
# MINI カーネルがない場合は作ります
if [ ! -x /sys/compile/MINI/kernel ]
then
	cat << EOM
The MINI kernel does not exist, please create one.
Here is an example config file:
#       MINI カーネルの config file の例
# MINI -- A kernel to get FreeBSD onto a disk.
#
machine         "i386"
cpu             "I486_CPU"
ident           MINI
maxusers        5

options         INET            # needed for _tcp _icmpstat _ipstat
                                #            _udpstat _tcpstat _udb
options         FFS             #Berkeley Fast File System
options         FAT_CURSOR      #block cursor in syscons or pccons
options         SCSI_DELAY=15   #Be pessimistic about Joe SCSI device
options         NCONS=2         #1 virtual consoles
options         USERCONFIG      #Allow user configuration with -c XXX

config          kernel	root on da0 swap on da0 and da1 dumps on da0

device          isa0
device          pci0

device          fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
device          fd0 at fdc0 drive 0

device          ncr0

device          scbus0

device          sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
device          npx0 at isa? port "IO_NPX" irq 13 vector npxintr

device          da0
device          da1
device          da2

device          sa0

pseudo-device   loop            # required by INET
pseudo-device   gzip            # Exec gzipped a.out's
EOM
	exit 1
fi

cp -f /sys/compile/MINI/kernel /mnt

gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore

gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync

cp /root/.profile /mnt/root

cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV

chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore

#
# create the devices nodes      デバイスノードを作る
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV sd0
./MAKEDEV sd1
./MAKEDEV sd2
./MAKEDEV st0
./MAKEDEV pty0
cd /

#
# create minimum filesystem table       最小限のファイルシステムテーブル
#
cat > /mnt/etc/fstab <<EOM
/dev/fd0a    /    ufs    rw  1  1
EOM

#
# create minimum passwd file            最小限のパスワードファイル
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM

cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM

chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

#
# umount the floppy and inform the user フロッピディスクを unmount
#
/sbin/umount /mnt
echo "The floppy has been unmounted and is now ready."]]></programlisting>
        </example>

      </sect3>

      <sect3>
	<title>災難の後に</title>

	<para>重要な問題は、ハードウェアが生き残ったかどうかです。
	  定期的なバックアップを取っていれば
	  ソフトウェアについて心配する必要はありません。</para>

	<para>ハードウェアがダメージを受けていたら、
	  最初にそのダメージを受けた部品を交換してください。</para>

	<para>ハードウェアに問題がなければ、
	  フロッピディスクをチェックしてください。
	  カスタム起動フロッピディスクを使っているのであれば
	  シングルユーザ(<prompt>boot:</prompt> プロンプトの出た時に
	  <literal>-s</literal> とタイプしてください)
	  で起動してください。それから次の
	  「ファイルシステムを 1 つずつ回復する」
	  を読んでください。</para>

	<para><filename>boot.flp</filename> と
	  <filename>fixit.flp</filename>
	  を使っているのであればこのまま読み続けてください。
	  <filename>boot.flp</filename> を入れて起動してください。
	  本来のインストールメニューが表示されるはずです。(ここで)
	  <literal>Fixit--Repair mode with CDROM or
	    floppy.</literal> オプションを選びます。指示の通り
	  <filename>fixit.flp</filename> を入れてください。
	  <command>restore</command> とその他の必要なプログラムは
	  <filename>/mnt2/stand</filename> に置かれています。</para>

	<para>ファイルシステムを一つずつ回復する</para>

	<indexterm>
    <primary><command>mount</command></primary>
  </indexterm>
	<indexterm><primary>root partition</primary></indexterm>
	<indexterm>
    <primary><command>disklabel</command></primary>
  </indexterm> 
	<indexterm>
    <primary><command>newfs</command></primary>
  </indexterm> 
	<para>最初のディスクの root パーティションを <command>mount</command>
	  (例えば <command>mount /dev/da0a /mnt</command> のように)
	  マウントしてみてください。
	  ディスクラベルが破壊されている場合は <command>disklabel</command>
	  を使ってあらかじめプリントしておいた通りに
	  パーティションを作り直しラベルをつけてセーブしてください。
	    <command>newfs</command> を使いファイルシステムを作り直します。
	  ルートパーティションを読み書き可能にマウント (<command>mount
	    -u -o rw /mnt</command>) しなおします。
	  バックアッププログラムとバックアップテープを使って
	  このファイルシステムのデータを回復します (例えば
	  <command>restore vrf /dev/sa0</command> とします)。
	  ファイルシステムをアンマウント (<command>umount
	    /mnt</command> など) して、
	  障害を受けたファイルシステムそれぞれについて
	  繰り返してください。</para>

	<para>システムが動き出したら、
	  新しいテープにデータをバックアップしてください。
	  どのような理由で再び事故が起きたりデータが
	  失われるかはわかりません。これに時間を費す事で、
	  後々の災難から救われる事になります。</para>
      </sect3>

<![ %not.published; [

      <sect3>
	<title>* 災難対策をしていませんでした。
	  どうしたらいいでしょう?</title>

	<para></para>
      </sect3>
]]>

    </sect2>
  </sect1>

  <sect1 id="backups-floppybackups">
    <title>フロッピディスクへのバックアップはどうですか?</title>

    <sect2 id="floppies-using">
      <title>データをフロッピディスクにバックアップすることはできますか?</title>
      <indexterm><primary>backup floppies</primary></indexterm> 
      <indexterm><primary>floppy disks</primary></indexterm> 

      <para>実はフロッピディスクはバックアップ向きのメディアとは言えません。
        というのは:</para>

      <itemizedlist>
	<listitem>
	  <para>特に長期間に渡って保存する場合、信頼性が低い。</para>
	</listitem>

	<listitem>
	  <para>バックアップ、リストアがとても遅い。</para>
	</listitem>

	<listitem>
	  <para>容量が小さい (ハードディスク全体の日々のバックアップに
	    1 ダース、長期間なら本当にたくさん)。</para>
	</listitem>
      </itemizedlist>

      <para>けれども、データをバックアップする他の手段がない場合には、
        まったくバックアップをしないよりもフロッピディスクを使うほうが良い
        でしょう。</para>

      <para>これを行う場合には、高品質のものを使うようにしてください。
	まわりに何年も転がっていたフロッピディスクは使わない方よいでしょう。
	評判のよいメーカの新品を使うことが理想です。</para>
    </sect2>

    <sect2 id="floppies-creating">
      <title>どうやってデータをフロッピディスクにバックアップ
	するのですか?</title>

      <para>フロッピディスクへバックアップする最も良い方法は tar
        <command>tar</command> コマンドに <option>-M</option> (マルチ・ボリューム)
        オプションを付けて、複数のフロッピディスクにまたがるバックアップも
	できるようにする方法です。</para>

      <para>カレントディレクトリのすべてのファイルとサブディレクトリを
        バックアップするには、以下のようにします (<username>root</username> で):</para>

      <screen>&prompt.root; <userinput>tar Mcvf /dev/fd0 *</userinput></screen>

      <para>1 枚目のフロッピディスクがいっぱいになると <command>tar</command> は
	次のボリュームを入れるようプロンプトを表示します。
        ( <command>tar</command> は、さまざまなメディアを扱えるので
	ボリュームと表示します。ここではフロッピディスクのことです)</para>

      <screen>Prepare volume #2 for /dev/fd0 and hit return:</screen>

      <para>これは (ボリューム番号が増えながら) 指定されたすべてのファイルが
	保存されるまで繰り返されます。</para>
    </sect2>

    <sect2 id="floppies-compress">
      <title>バックアップを圧縮することはできませんか?</title>
      <indexterm>
        <primary><command>tar</command></primary>
      </indexterm> 
      <indexterm>
        <primary><command>gzip</command></primary>
      </indexterm> 
      <indexterm><primary>圧縮</primary></indexterm> 

      <para>残念ながら、<command>tar</command> はマルチ・ボリュームに保存する場合は
	<option>-z</option> オプションを使うことができません。
	もちろん、すべてのファイルを <command>gzip</command> してから、フロッピディスクに
	<command>tar</command> して、ファイルを <command>gunzip</command>
	することはできます!</para>
    </sect2>

    <sect2 id="floppies-restoring">
      <title>リストアはどうしますか?</title>

      <para>保存したファイルすべてをリストアするには:</para>

      <screen>&prompt.root; <userinput>tar Mxvf /dev/fd0</userinput></screen>

      <para>特定のファイルのみをリストアする方法は二つあります。
        まず、一枚目のフロッピディスクを挿入して次のようにします。</para>

      <screen>&prompt.root; <userinput>tar Mxvf /dev/fd0 <replaceable>filename</replaceable></userinput></screen>

      <para><command>tar</command> は、必要なファイルを見つけるまで、続きのフロッピディスクを
	セットするよう表示します。</para>

      <para>別の方法として、どのフロッピディスクにファイルが入っているのかが
	分かっているなら、そのフロッピディスクを挿入して上記と同じコマンドを
	使うこともできます。最初のファイルが前のフロッピディスクから続いて
	いる場合は、<command>tar</command> は、頼みもしないのに、そのファイルはリストア
	できないと警告します!</para>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
