tarを使用してマルチボリュームアーカイブを索引付けする方法は?

tarを使用してマルチボリュームアーカイブを索引付けする方法は?

私はGNUを使用してtarマルチボリュームアーカイブを作成しています。

DIR=~/temp
BLOCKSIZE=500M
tar cMf multi-0001.tar --new-volume-script=volume-script.sh --tape-length=$BLOCKSIZE $DIR

各ボリュームの内容を表示するファイルのリストを作成したいと思います。いくつかのオプションを追加してみましたが、アーカイブされている--verboseすべてのファイルのリストは提供されていますが、そのファイルがどのボリュームにあるかはわかりません。

コマンドを使用してtarを介して各ボリュームを再実行できることを知っていますが、--listすべてのデータを2回処理することを避けたいと思います。

(参考までに以下にありますvolume-script.sh。質問と関係がないようです。

#! /bin/bash
echo multi-$(printf "%04d" $TAR_VOLUME).tar >&$TAR_FD

)

編集:質問が取り消されました

この質問には間違った仮定が含まれています。これは後続の質問に対する回答で確認されます。これは、--list検索可能なメディアにインデックスファイルを生成するのに完全に許可される方法です。私の解決策は次のとおりです。

DIR=~/temp
BLOCKSIZE=500M
tar cMf multi-0001.tar --new-volume-script=volume-script.sh --tape-length=$BLOCKSIZE $DIR

for i in *.tar;
 do echo q | tar --list -M -f $i --verbose --verbose > $i.index.txt 2>/dev/null;
done

ベストアンサー1

私の考えであなたが求めるものは次のとおりです。 tar tvf filename

これにより、tarファイルを開かずにそのファイルの内容のリストが生成されます。 tarアーカイブを作成して実行する必要がありますが、必要なものを提供する必要があります。

次のようにtarコマンドの後に簡単に接続できます。 tar cMf multi-0001.tar --new-volume-script=volume-script.sh --tape-length=$BLOCKSIZE $DIR ; tar tvf multi-0001.tar > multi-001-listing.txt

おすすめ記事