tar アーカイブをテープに書き込み、個々のファイルを抽出します。

tar アーカイブをテープに書き込み、個々のファイルを抽出します。

各ファイルのブロックオフセットをルックアップテーブルに保存しながら、テープにtarアーカイブを書きたいです。その後、アーカイブから単一のファイルを回復したい場合は、テープでそのブロックを見つけて、そのファイルを個別に回復します。

tarはこのようにファイルの回復をサポートしていますか?これは、テープがアーカイブの先頭にない場合です。

圧縮を使用しません。

tarがそれをサポートしていない場合、どうすればこれを行うことができますか? (おそらくddを使用していますか?)

ベストアンサー1

tarどこで助けを求めるのか分からないので、ここでは役に立ちません。しかし、すでに約20SAMFS/QFS年間プロジェクトで使用されてきた同様のソリューションがありますHSM

このソリューションでは、開始ブロック番号が別々のデータベースに保持されます。

ここでの問題は、テープ検索が512バイトブロックではなく、より大きなテープレコードサイズに基づいていることです。したがって、これを達成する唯一の方法は、ファイルのテープブロック番号を見つけてmt fsr xxxテープで使用してからモードtarで起動することですignore checksum errors

tarこれはうまくいきますが、指定されたファイルを正常に抽出した後でも終了せず、現在のテープファイルが終了するのを待つ必要があるため、問題があります。

この方法を試しても価値があると思われる場合は、starファイルを抽出して終了するオプションを追加できます。

starモードで512バイトベースのブロック番号を印刷するオプション-block-number(とともに)はすでにあります。この数値をブロック要素で除算すると(整数算術を使用して結果を丸める)、前方検索に必要なパラメータを取得できます。-v-cmt fsf

star(in)の次のバージョンは、schilytools次の週に準備される予定です。これには、新しいオプション-one-filéiskip=offset、最初に読み取られたデータブロックから指定された量のデータをスキップできる別のオプションが含まれます。これにより、そのオプションを回避できます-i

今日、schilytools-2020-06-09はstar以下のオプションを追加してリリースされました。

  • -one-file抽出モードでこのオプションを使用し、ファイルが一致する場合は、starそのファイルを処理して終了します。

  • iseek=#アーカイブヘッダーを見つける前に、最初の読み取りテープブロックからスキップされたバイトオフセット。

  • mtseek=#これは、印刷された数字に基づく512バイトのブロックオフセットですstar -cv -block-offset ...。アーカイブが通常のファイルの場合、読み取りを開始する前にこのオフセットで操作が実行されますstarlseek()アーカイブがテープの場合、ブロックオフセットパラメータはテープstarブロック要素に分割され、コマンドがioctl()最初に実行されてテープがその場所に渡され、残りはiseek最初の読み取りブロックのオフセットとして暗黙的に計算されます。

  • アスタリスクを使用してテープを渡す場合は、star -xp mtseek=# -one-file pat=* ...ファイルを読み取り、ファイルを復元して終了します。

おすすめ記事