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