私は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