この文書中で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.gz
から入手できます。
以下このドキュメントでbackup-1.03.tar.gz
中のスクリプトを単に
``バックアップスクリプト
''と呼びます。テープへのバックアップ用に
これらのスクリプトを使わないで下さい。
圧縮ファイルからファイルを展開するためのafio(訳注:アーカイブプログラム)
としてつかいます。リストア中メディアの読み込みエラーがあった場合そのほうが
安全です。Karel氏はもうbackup
をサポートしておらず、'tob'(tape oriented
backup)を製作されています。著者も新しいパッケージを試していないのでここで
述べる手順との重要な違いについてはコメントできません。
まず始めにftapeモジュールを入手します。これは現在のカーネルの一部となっています が、古いカーネルを使っている場合は
ftp://sunsite.unc.edu/pub/Linux/kernel/tapes/ftape-2.05.tar.gz
から入手しておいて下さい。
次にSlackwareブートディスク(著者はnetディスクを使いますがそれほど違いはあり
ません)とtape144
ルートディスク(を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
ifconfigエントリーのIP#は MS-DOSマシンのものにして下さい。
このファイルを/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ディレクトリの全ファイルとそのサブディレクトリは安全ではないことに注意
して下さい。誰かがブートディスクを使ってLinuxからMS-DOSマシンをブート
して、このディレクトリをマウントすることができるのです。NFSサブディレクトリに
は重要なファイルは置かないようにして下さい。
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:通信)バッファ
をテープの巻き戻しを防ぐために使っています。