SSブログ

複数のテープにまたがるデータを途中のテープから戻す方法 [小技(Linux)]

 例えばLTOとか、DDSとか、QMT(CMT)とか、DLTとかいったようなテープデバイスにデータを退避してあるとする。データ量が多くて1本のテープに収まりきらない場合にはcpioコマンドなら複数のテープにまたがって一つのボリュームなりバックアップデータなりをまとめて退避することができる。

 が、この場合に特有の困った問題が発生することがある。テープの読み取りエラーである。
 8ビットパソコン世代のオッサンなら、Tape read errorとでも言えばイメージが涌きやすいだろうか。(大笑)

 例えば、cpioコマンドでデータをテープにバックアップしたとする。退避するときに

 cd /some/directory
 find . -print | cpio -oBv -H newc >/dev/st0

 とかいう具合にデータをバックアップしたとする。(オプション類はお好みに応じてどうぞ)

 で、復元する場合、普通は…

 cd /some/restore
 cpio -iBvumd < /dev/st0

 とかいう感じで戻すことになると思う。(オプション類はお好みに応じてどうぞ)
 このとき、テープの1本目の先頭部分には「-H」オプションを指定した場合のフォーマット情報が保存されるそうで、復元する場合には「-H」オプションは省略しても構わないことになっている。(別に記述してもよいけど)

 さて。ここで不幸にして1本目のテープでエラーが出ちゃったとする。しかしお目当てのデータはまだ復元されていない!!2本目のテープに望みをかけたいが先に進まず止まっちゃった!    みたいな場合。

 あるいは、なぜか1本目のテープが見当たらない!!テープの保管場所にあるはずなのにど~しても見当たらない!!   みたいな場合。

 もしくは、1本目のテープにうっかり全然違うデータを上書きして壊しちゃった!!!どーしよう!!!   みたいな場合。

 2本目以降から(3本目でも4本目でもいいけど)復元したい場合は、普通にcpioコマンドを実行するが、「-H」オプションを必須で指定する必要がある。

 cd /some/restore
 cpio -iBvumd -H newc< /dev/st0

 すると、テープをまたがって記録されているファイルののファイルから復元することができる。
 実行するとおそらくこんな具合にワーニングメッセージが出るが。

 cpio: warning: skipped ??????? bytes of junk

 「???????」のところには何らかの数値が入る。要するに読み飛ばされるデータのバイト数である。

 ひとまずこれで、2本目以降のデータをなんとか復元することも可能ではある。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。