この文書中で2台のマシンをそれぞれ``msdos''、``linux''と
呼びます。``msdos''はMS-DOSの走っているテープドライブの接続された
マシン名で、``linux''はテープドライブにバックアップ/リストアを
行いたい方のマシン名です。簡単にするためにLinuxでブート、稼働させるときでも
1台目のマシンを``msdos''と呼びます。さらにこのドキュメント中の
パス名もシステムのどこかにマウントされたSearch-And-Rescue (SAR)ディスク
とLinuxマシンにつながりがあるように書きます。
例えば、これは/etc/passwdはLinuxマシンのハードドライブ用のパスワード
ファイルであることを意味します。/tape144/etc/passwdはフロッピー
ディスク上のものに相当するファイルです。
(訳注:SARディスクツールについて
LSM)
Begin3
Title:          SAR: a Search And Rescue set
                (SAR     検索、レスキューセット)
Version:        2.21
Entered-date:   01dec94
Description:    (SARはSearch And Rescueフロッピーセットを作るためのスクリプト
                です。ハードディスクが不幸なクラッシュをしたときに使います。
                フロッピーはあなた自身でアップデートされたカーネルと
                ユーティリティセットが使われます。設定ファイルはSARセットの
                生成をカスタマイズします。SARは
                        1枚か2枚のフロッピーレスキューセット
                        "holecp"ユーティリティによってコピーされたファイル
                        Kiss "simple shell"
                を含んでいます。広範囲にわたるドキュメントとユーティリティ
                プログラムがついています)。
Keywords:       backup rescue SAR search first-aid
Author:         Karel Kubat (karel@icce.rug.nl)
Maintained-by:  see Author
Primary-site:   ftp.icce.rug.nl:/pub/unix/SAR-X.YY.tar.gz (X.YY is version)
Alternate-site: sunsite.unc.edu, tsx-11.mit.edu
Original-site:  --
Platforms:      Linux systems
Copying-policy: PostcardWare (if you like it, send me a postcard)
                MegaHard (who wants a Microsoft)
                but really: GPL, but inform me if you want to make changes
End
著者はKarel Kubat氏のバックアップスクリプトversion 1.03を使っています。
ftp://sunsite.enc.edu:/pub/Linux/system/Backup/backup-1.03.tar.gzbackup-1.03.tar.gz中のスクリプトを単に
``バックアップスクリプト''と呼びます。テープへのバックアップ用に
これらのスクリプトを使わないで下さい。
圧縮ファイルからファイルを展開するためのafio(訳注:アーカイブプログラム)
としてつかいます。リストア中メディアの読み込みエラーがあった場合そのほうが
安全です。Karel氏はもうbackupをサポートしておらず、'tob'(tape oriented 
backup)を製作されています。著者も新しいパッケージを試していないのでここで
述べる手順との重要な違いについてはコメントできません。
まず始めにftapeモジュールを入手します。これは現在のカーネルの一部となっています が、古いカーネルを使っている場合は
ftp://sunsite.unc.edu/pub/Linux/kernel/tapes/ftape-2.05.tar.gztape144ルートディスク(を3"1/2フロッピーにイメージ
を書き込んだディスク)を用意します。
ftapeモジュールは、実行しているカーネルに組み込まれている場合のみ
動作します。tape144ルートディスク上でftape.oモジュールと
動作させることはできません。モジュールがシンボルの削除(stripped)をしていて
組み込めないからだと思います。
そこでネットワークとftapeをサポートするカーネルを再構築する必要があります(
また古いカーネルを使っている場合は新しいftape.oモジュールを
サポートするようにします)。ここでftapeアーカイブを作るための文書を
読んでおいて下さい。コンパイルするカーネルはLinux、MS-DOSマシン両方でイーサ
ネットカードをサポートすることを忘れないで下さい。
新しいカーネルイメージをnetブートディスクにコピーします。/bin/cp
コマンドを使って下さい。起動可能なカーネルイメージを作るために``dd''
コマンドは使いません。ラベルはSAR#1とします。ブートディスクをライトプロ
テクトしておくのを忘れないで下さい。
さて次にtape144ルートディスクをマウントします。マウントポイントは
ファイル名と混同しないように/tape144とします。スペースを空ける
必要があるので以下のファイルを削除します。
/tape144/bin/dialog
/tape144/bin/elvis
/tape144/bin/vi
/tape144/boot/ftape.o
つぎに新しいファイルを作ります。
/tape144/etc/exports
/mnt    msdos(ro)
msdos''は、テープドライブがインストールされているMS-DOS
マシン名かIP#に置き換えて下さい。
(マシン名は)ネームサーバに依存しないようにします。Linux と MS-DOSマシンの
名前とIPアドレスを/tape144/etc/hostsに以下のように追加します。
128.100.75.114  caliban.physics.utoronto.ca caliban caliban.physics
128.100.75.111  ariel.physics.utoronto.ca ariel ariel.physics
inetd設定でちょっと問題があります。rshデーモンのフルパス名を書かなくては
なりません。/tape144/etc/inetd.confの19行目を変更します。
(訳注:コメント文を表示させないでcatするにはgrep ^[^#] inetd.conf
などとして下さい)。
shell   stream  tcp     nowait  root    /usr/etc/tcpd   /usr/etc/in.rshd
MS-DOSマシンがネットワークを使えるように/tape144/etc/rc.d/rc.inet1
にローカルネットルーチンの情報を追加します。このフォーマットは各自のネット
ワーク設定に依るので、Linuxマシンの/etc/rc.d/rc.inet1から適当な
フォーマットをコピーします。著者のネットワークでは以下のような行を追加しまし
た。
/etc/ifconfig eth0 128.100.75.111 broadcast 128.100.75.0 netmask 255.255.255.0
/etc/route add -net 128.100.75.0 netmask 255.255.255.0
このファイルを/tape144/etc/rc.d/rc.inet1-lにコピーします。
MS-DOSマシンよりもLinuxマシンの設定を反映させるために新しいファイルの
IP#を変更します。
/tape144/etc/rc.localファイルの3〜11行をコメントアウト(clip out)
します。ここはrc.inet*ファイルを実行するためのif分岐です。ブート
アップ中はこれが起こらないようにします。
/tape144/root/.rhostsファイルを作ります。
linux root
linux''はドメイン名も含んだ
マシン名かIP#に置き換えておいて下さい。
バックアップを取っている間、MS-DOSマシンにログインする人がいないように
rootログイン用の/tape144/etc/passwdのパスワードフィールドを
満たしておきます。Linuxマシンの/etc/passwd fileから適当なフィールド
をコピーすればよいです。
/usr/bin/rshを/tape144/usr/binにコピーします。
/usr/etcから以下のファイルを/tape144/usr/etcにコピーします。
(訳注:/usr/etcでなく/etcの環境の場合は/etcから
コピーして下さい)
in.rshd
rpc.mountd
rpc.nfsd
rpc.portmap
services
tcpd
新しいスクリプト/tape144/bin/tapesetupを作ります。以下の文を
そのファイルに書き込んで下さい。
#! /bin/sh
/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2
/bin/mount linux:/nfs /mnt
/bin/insmod /mnt/ftape.o
linux''はLinuxマシン名にします。
新しいカーネルではinsmodの行はいりません。
次に以下のようなスクリプト/tape144/bin/msdossetも作っておきます。
#! /bin/sh 
/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2
mount linux:/mnt /mnt
/bin/insmod /mnt/ftape.o
linux''はLinuxマシン名にします。
同様に新しいカーネルではinsmodの行はいりません。
説明のためのファイル/tape144/root/notesも作っておきます。これは
復旧の時の手順情報を書いておきます。
--------------------- ここから -----------------------------------
ハードディスクが壊れた時修復させるために、SAR(Search-And-Rescue、復旧)
ディスク#1と#2を使ってLinuxをブートします。そして以下のように実行します。
   /bin/sh /etc/rc.d/rc.inet1-l
   /bin/sh /etc/rc.d/rc.inet2
   /usr/etc/rpc.portmap
   /usr/etc/rpc.mountd
   /usr/etc/rpc.nfsd
つぎにSARディスク#3を入れて、
   mount /dev/fd0 /mnt
とします。新しいマウントポイントを作ります。
   mkdir /mnt2
ここにLinuxハードディスクのパーティションをマウントして下さい。
はじめにパーティションをフォーマットしておかなくてはならないかも
しれません。その時はLinux Installation HOWTOを参考にします。
SARディスクは再フォーマットするのに必要な全ファイルがあります。
最後にSAR#1、SAR#2ディスクを使ってMS-DOSマシンをブートアップしこのマシンから
/bin/msdossetスクリプトを実行して下さい。フロッピードライブからNFSファイルを
getしているので実行には1分位かかるかもしれません。しばらくお待ち下さい。
以上でテープからLinuxマシンの /mnt2 に復旧されました。
もしバックアップスクリプトを使っているなら'afio'コマンドを
/tape144/local/binサブディレクトリにコピーしておきます。
復旧ディスクにバックアップスクリプトの残りを入れておく必要はありません。
アーカイブは'afio'と'gzip'だけで復旧できます。
著者はバックアップスクリプトをそれがちゃんと動作するように使えていません。
テープアーカイブはきれいに作られているように見えるのですが、復旧できません。
ブロックサイズの削除とスクリプト中の書き換えをすることでバグをとりました。
以下その``netbackup''スクリプトのパッチを書きました。このパッチを、
SARディスクへのコピーと同様に'netbackup'のLinuxマシンのハードディスクコピー
にも当てておきます。
*** netbackup.orig      Mon Jan  9 17:22:32 1995
--- netbackup   Mon Jan  9 17:23:25 1995
***************
*** 35,41 ****
                  "'mknod", devname, "p'");
      exec ("su -", USERNAME, "-c",
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "of=" REMOTE_DEVICE, "obs=20k", "conv=sync\"",
                        "<", devname,
                "'&"
         );
--- 35,41 ----
                  "'mknod", devname, "p'");
      exec ("su -", USERNAME, "-c",
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "of=" REMOTE_DEVICE, "\"",
                        "<", devname,
                "'&"
         );
***************
*** 50,56 ****
                  "'mknod", devname, "p'");
      exec ("su", USERNAME, "-c", 
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "if=" REMOTE_DEVICE, "ibs=20k", "conv=sync\"",
                        ">", devname,
                "'&"
         );
--- 50,56 ----
                  "'mknod", devname, "p'");
      exec ("su", USERNAME, "-c", 
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "if=" REMOTE_DEVICE, "\"",
                        ">", devname,
                "'&"
         );
これでSARディスク#2が出来上がりました。ライトプロテクトしておいて下さい。
つぎに空のフォーマットされたディスクをマウントします(フォーマットは
fdformat、mkfsコマンドを使って行って下さい)。
ftape.oファイルをそのディスクにコピーして、ディスクラベルは
SAR#3としておきます。いくつか理由があり、このディスクをライトプロテクト
すると不都合が生じます。書き込み可能にしておいて下さい。
Linuxマシン上で、NFSファイル保存用ディレクトリを作ります。
/nfs
ftape.o(unstripped, 500KB強)を置きます。Linuxの
/etc/exportsファイルに
/nfs    msdos(ro)
NFSデーモン(rpc.mountd と rpc.nfsdを使って)を再スタート
します。SIGHUPで再び開始するのはどうもよくないので、killして再度実行
します。もし/etc/rc.d/rc.inet2でこれらのデーモンをアクティブにしてい
ないのなら今のうちに設定しておきましょう。
さあ、バックアップと復旧の設定は終りました。Linuxマシンのフルバックアップ
をとるために、SAR#1ディスクを使ってMS-DOSマシンをブートします。2枚目の
ディスクのプロンプトが出たらrootとしてログインして/bin/tapesetup
スクリプトを実行します。終ったらMS-DOSマシンからログアウトします。
もしバックアップスクリプトを使っているなら、ここでnetbackupコマンドが使えます。
またGNU tar, cpio, mtコマンドに
``-f msdos:/dev/ftape''スイッチを付けられます。バックアップ
プログラムがあるならローカルファイルに書き込むこともできます。それには
以下のようにします。バックアッププログラムを``localbackup''とします。
コマンドラインの引数にファイルを書きます。
mknod /tmp/tapepipe p
rsh msdos dd of=/dev/ftape < /tmp/tapepipe &
localbackup /tmp/tapepipe
/tmp/tapepipeを削除しておいて下さい。
Linuxマシンの復旧:
netbackupスクリプト、tar, cpio等は特別な操作を
しなくても動作します。もしファイルから復旧するローカルプログラムがあるなら、
mknod /tmp/tapepipe p
rsh -n msdos dd if=/dev/ftape >> /tmp/tapepipe &
localrecovery /tmp/tapepipe
/tmp/tapepipeを削除しておいて下さい。
著者はMS-DOSマシンへのrootログインに 'rsh'を使っています。
これは正確な.rhostsエントリーが必要です。'tape144'ディスク
の設定はrootでrshを使えるようにしますが、telnetや
rloginはrootで使えません。またログインはコンソールにのみ制限されます
が、これはセキュリティ上良いことです。
root .rhost ファイルについて心配だったら、SAR#2の新しいユーザ
``tapeuser''を作っておくこともできます。パーミッションはテープ
ドライブは操作できてディスク操作はできないといったものにします(新しい
グループを作ってそのグループにtapeuserをおきます。そして
chown と chmod コマンドで /dev/rft* 、
/dev/nrft*ファイルのオーナー、グループを変更しておきます)。
バックプログラムではrootとしてよりもユーザー名でrshを使わなければ
なりません。もちろんSAR#2ディスクの~tapeuserに
.rhostsファイルを置いています。著者の場合はrootの.rhosts
よりもこちらを選んでいます。
最後にクラッシュしたハードディスクの復旧をしてみます。ここでLinux
パーティションは完全に回復できないと仮定しましょう。必要なら
「Linux Installation HOWTO」に従ってパーティションを再フォーマットして
おきます。SARディスク#1を使ってLinuxマシンをブートします。プロンプトが
表示されたらSARディスク#2を入れます。ここで/root/notesファイルに
書いたメモに従って作業をすすめて下さい(Linuxマシンにマウントされているなら
これは/tape144/root/notesです)。いったん両方のマシンがブートされたら
、必要な復旧ルーチンを実行します。バックアップスクリプトを実行するなら以下の
ようにすすめていきます。
rsh -n msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
        
rsh -n -l tapeuser msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
        
mknod /tmp/backpipe p
rsh -n msdos dd if=/dev/ftape >> /tmp/backpipe &
afio -i -v -Z -c 1024 /tmp/backpipe
        
afioがピックアップしたリモートマシン上のテープを読み、標準出力へ
その結果が表示されます。'-i'スイッチを使うとカレントディレクトリ
(ハードディスクパーティションのroot)に関係したファイルの復旧について教えて
くれます。'-v'はverboseで復旧したファイルのリストを表示します。
'-Z'はafioにそれぞれ圧縮されたファイルのアーカイブであることを
教えます。'-c 1024'は5 MBストリーム(streaming buffer:通信)バッファ
をテープの巻き戻しを防ぐために使っています。