.tar.bz2で.tarを取得できますか?

.tar.bz2で.tarを取得できますか?

しなければならない特定のフォルダの抽出.tar.bz2(34G)から。問題は1時間かかるということ。圧縮のためだと思います。特定のフォルダを圧縮せずに抽出する方が速いようです。

.tarそれから来ることは可能です.tar.bz2か?

答え1

特定のフォルダの関連部分を解凍できるかどうかに関する質問がある場合、bzip2は圧縮データをインデックス化しません。つまり、以前のコンテンツを処理せずに、解凍されたデータの特定のバイトに直接移動する方法はありません。tar中央インデックスがない順次形式でもあります。


ただし、一度解凍して単一のフォルダを複数回抽出して作業を事前に償却できるかどうかに関する質問がある場合は、はい、次のコマンドを使用できますbzip2

bzip2 -d foo.tar.bz2

それからfoo.tar

答え2

特定のフォルダを圧縮せずに抽出する方が速いようです。

残念ながら、圧縮特性とtarファイル形式のため、これは不可能です。ファイルがどこにあるかを知るには、圧縮ファイル全体を解凍する必要があります。これは、ファイルの前のすべての内容がファイルの開始場所を知る必要があり、ファイルの後のすべての内容がコピーを持つようにtar同じファイルを複数回保持できるためです。同じファイルの「後で」古いファイルを上書きします。最後のファイルを解凍することで、そのファイルのコピーがもう存在しないことを確認できます。

したがって、あなたができる唯一のことは、より速く解凍するために並列bzip2を使用することですpbzip2(最初にインストールする必要があるかもしれません!)

pbzip2 -d -c large.tar.bz2 | tar xf - path/to/specific/folder

将来のアーカイブの場合:圧縮可能または圧縮に近いものbzip2と許可されるものたくさんより早く解凍した。したがって、この問題がより頻繁に発生する場合は、より高速な解凍を可能にし、アーカイブ全体を解凍せずに選択的に抽出できる方法を使用してコンテンツ全体を再アーカイブすることが妥当である可能性があります。

pbzip2 -d -c large.tar.bz2 | sqfstar -comp zstd -xattrs -Xcompression-level=8 large.sqsh

(ほとんどのシステム(Fedoraベース、Debianベース)では、パッケージの一部であることに加えてpbzipこのエントリが必要です。)sqfstarsquashfs-tools

ボーナス:これらのアーカイブは直接インストールできますが、コマンドラインツールを使用してアーカイブから個々のファイルをインポートすることもできます。

udisksctl loop-setup -f large.sqsh # note the displayed block device name
udisksctl mount -b /dev/loop1234   # only if not automounted by previous command

答え3

file.tar.bz2 から特定のフォルダーを抽出して独自のターゲット・パス・ディレクトリーに入れるには、次のようにします。

tar -C /own/target_path/ -xvf file.tar.bz2 path/specific_folder_from_file_tar_bz2

抽出する特定のフォルダは/own/target_pathにあります。

挨拶...

関連情報