tarを7zに直接変換しますか?

tarを7zに直接変換しますか?

私は数GBのサイズで、何千ものファイルを含む複数のタールボールを持っています。現在、タールボールは個々のファイルを抽出するのを非常に退屈にするので、これをより一般的な7zアーカイブに変換できるかどうか疑問に思います。可能であれば、これを内部で実行したいと思います。つまり、タールボールを完全に抽出していない状態で実行したいのです。

これを行うには次のコマンドを使用できると思いましたが、結果のアーカイブにはすべてのデータを含むファイルが1つだけ含まれています。

tar -xf 100GB.tar -O | 7za a -si -ms=16f32m 100GB.7z

これは可能ですか?

答え1

archivemount解凍せずにtarアーカイブをマウントできます。その後、埋め込みファイルを他の場所にあるかのように圧縮できます。私はそれを何度も使用しませんでした。私の考えでは、そのウェブサイトがずっと前にダウンしていたようですが、おそらく最高の兆候ではないかもしれません。

そうでなければ置く7zでは同様の圧縮ツールを使用できます。最も重要なのは、すべての権限を維持し、すべての最新のLinuxですぐにマウントできるアーカイブを作成できることです(つまり、サードパーティのユーザースペースファイルシステムをインストールする必要はありません)。 )archivemount):

mksquashfs my_new_compressed_archive.squash  -comp zstd  -tar        < 100GB.tar
#          | target archive name          | |compressor| |read tar|  |read from this file|
#                                           |          \______
#                                           |use -comp lzma   |
#                                           |to use the same  |
#                                           |compressor as 7z.|
#                                           |Usually, zstd is |
#                                           |a good choice, as|
#                                           |it's not as slow |
#                                           |as LZMA/7z at    |
#                                           |reasonable com-  |
#                                           |pression ratios. |
#                                           |Also, unlike LZMA|
#                                           |zstd-compressed  |
#                                           |squashfs can be  |
#                                           |mounted by the   |
#                                           |Linux kernel.    |
#                                           \~~~~~~~~~~~~~~~~~/

その後、一般ユーザーでも新しく作成されたアーカイブをマウントできます。

udiskctl loop-setup -f my_new_compressed_archive.squash

関連情報