しなければならない特定のフォルダの抽出.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
このエントリが必要です。)sqfstar
squashfs-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にあります。
挨拶...