web-dev-qa-db-ja.com

大規模なtarアーカイブの内容をすばやく一覧表示する

かなり大きな(gzip圧縮された)tarアーカイブ(約37GiB)の内容をリストする必要があります。 tar -ztvf archive永遠にかかります。このリストをすばやく取得する方法はありますか?おそらく、特定のディレクトリの深さまでコンテンツをリストするだけでしょうか?

アーカイブをパックしているときに、コンテンツをすばやく一覧表示できるようにするために何かを行うことはできますか?

6
Thomas Arildsen

つまり、 "tar"を使用してアーカイブを作成したファイルのセットがあり、1つの出力ファイルが作成されます。次に、 "gzip"を使用して、その1つ "。tar"を圧縮しました。 )ファイルを "。Zip"にファイルします。

その場合、 "。tar"ファイル内のすべてのファイルのリストを取得するプロセスでは、 "。tar"ファイルは完全に解凍 "。Zip"ファイル、 "。tar"ファイルの内容を一覧表示する前。

これは、 "。Zip"ファイルに「直接」保存されているファイルのリストを取得するよりも常に時間がかかります。ファイルが大きい場合、この時間はかなり長くなる可能性があります。

圧縮されたアーカイブファイルにファイルをリストするのに必要な時間を短縮したい場合は、次のようにします。

  1. nzip(uncompress) "。tar"ファイルから "。Zip" ファイルを作成し、結果の "。tar"ファイルを基になるファイルセットに展開します

  2. ファイルのセットから直接 "。Zip"ファイルを作成します。

このようにして、アーカイブを解凍せずにアーカイブファイル内のファイルを一覧表示できます。

2
Kevin Fegan

-zは、tarファイルをungzipまたはgzipすることを意味します。タール自体は圧縮せずにバンドルされます。 gzipで実行できることはあまりありませんが、メタデータは圧縮されたtarファイルにあります。

$ gunzip -l co.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
             177183             1044480  83.0% file.tar

Gzipで確認できるのはこれだけです。タールに戻るには、ガンジップする必要があります。これを回避するUnixの方法は、マニフェストfind . > MANIFESTを生成し、それとともに出荷することです。ただし、.tar.gzを使用するのではなく、メタデータを圧縮しない別の形式を出荷するなど、他のオプションもあります。 7Zipはその説明に合うと思います。

最近では、通常のマニフェストよりも優れたプランであるsha1sumまたはmd5sumを使用するようになりました。

find destination/ -type f -exec sha1sum {} +; > sha1sum

これもかなり簡単にチェックできますが、both tarとgzipが内部でチェックサムを提供するため、不要です。

sha1sum -c ./sha1sum
2
Evan Carroll