しかし、ufsdumpではローカル接続以外のディスクには使用できません。そうするとtarで直接書き込むことになるのですが、テープにはufsdumpとtarの出力が混在することになります。
ufsdumpだけなら、
ufsrestore rvfs /dev/rmt/0 ディレクトリ名
のように復元ディレクトリ名さえわかっていれば簡単に戻せますが、tarを複数実行した場合は、毎回テープをmt fsfで1ブロックずつ探しながら復元しなければならないように思えます。
復元が簡単にできるような方法はないでしょうか?
/data と /appl はテープ装置のついているサーバとは別のサーバにあるのかしら?
テープ装置の無いマシンからufsdumpでバックアップを取得する方法もあるようですので試してみて。
tarを使用したバックアップの場合は、/から複数ディレクトリをバックアップするように指定するとファイルの移動せずに全部復元できます
取得例:tar cvf /dev/rmt/0n ./data ./appl
復元例:tar xvf /dev/rmt/0n
ufsdumpの後にtarを実行した場合にtarで取得した/dataのみ復元したい場合はmtコマンドでファイルを進める必要があります。
バックアップ手法をufsdumpからtarに変える手もありますが、あまり現実的ではないでしょうね。
Dummy.com
URLはダミーです。
テープの内容が何かわからないので難しいですね。
たとえば、各ファイルの前に、data.lbl,appl.lbl、var.lblなどの次に来るファイルを識別するためのファイルを
tarで書き込んではどうでしょうか、
たとえば、以下のような感じです。■tar(var.lbl)■dump(var)■tar(appl.lbl)■tar(appl)■tar(opt.lbl)■dump(opt)
1番目、3番目、5番目、7番目と奇数番目には次のファイルが何かを記録しておきます。このファイル名を調べれば、次のファイルをどのように
処理すればよいかわかるので、スクリプトで処理できるのではないでしょうか。
ところで、バックアップしたファイルは、頻繁にリストアされるものなんでしょうか。
皆様、回答ありがとうございます。
一番最初の方にもコメントをつけたのですが、はてなの返信方法がうまく分からなかったので、2番目の方の返信と一緒にさせて頂きました。
テープにラベルファイルを挟むというのはいい案ですね。ただ、今回はできるだけ既存の形を崩さずに修正する必要があったので諦めました。
結局、設定ファイルを別で作成することにし、そこに対象ディレクトリを記述して、バックアップスクリプトに読み込ませる形にしました。
実行時には、一度引数のディレクトリを全て標準出力し、その後、各ディレクトリをバックアップする前にローカルディスクのものかどうかを判別させ、それによってtarもしくはufsdumpを使用することにしています。
標準出力は全てメールで別サーバに送信し、それを見ることで各データがテープのどのファイルナンバーに一致しているかを判断できるようにしたので、これでデータリストア時にも迅速な対応ができそうです。
ちなみに、部分的なリストアの頻度は月1回程度発生している上、作業者が他社の方なので、できるだけ手順を簡略化できるような工夫が必要とされていました。
みなさま、ありがとうございました。
今回悩んでいる点は、ufsdumpを使ってバックアップが取得できないディスクがあるため、tarを使った効率的な復元方法を探しているのですが、なかなか見つからないことです。
ですので、tarを使用することを前提として、どれだけ簡単にテープから戻せるかをご教授願いたいと考えております。
今の状態は、以下のコマンドを実行してテープに書き出しております。
tar cvf /dev/rmt/0cn/ /data
tar cvf /dev/rmt/0cn/ /appl
さらにこの前後で/optなどをufsdumpでバックアップするコマンドを発行するため、テープには以下のようにデータが格納されます。
■dump(opt)■tar(/appl)■tar(/data)■dump(/var).....
復元する際はテープのどこに対象のtarが含まれているか分からないため、一つずつテープを進めて確認する必要があります。
復元するディレクトリ名は分かっているので、効率的に展開できるようなシェルがあればいいのですが。。。