一時フォルダに抽出せずにrarまたはtgzからsquashfsに変換する方法は?

一時フォルダに抽出せずにrarまたはtgzからsquashfsに変換する方法は?

私は圧縮のためにsquashfsを使用するのが好きです。これは、内部ファイルにアクセスするためにループデバイスとしてマウントするのが簡単なためです。

私は多くのrar、tgz、およびzipファイルを持っていますが、それらをsquashfsに変換したいと思います。

存在するこの回答、一時ファイルの合計ディスクサイズを使用しないように、ディスクイメージをsquashfsに圧縮するときにダミーファイルを使用できることがわかりました。

mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'

ダミーファイルを使用してrar、tgz、またはzipを同じ方法で(即座に)squashfsに変換したいので、最初にアーカイブ全体をディスクに抽出してから、別の操作でsquashfsに圧縮する必要はありません。

これらのアーカイブの一部には数千の個別のファイルが含まれており、その一部にはファイル名にスペースやその他の特殊文字が含まれています。

私が探しています閲覧ファイル私はそのオプションを使うべきだと思います-pf <pseudo-file>が、ダミーファイルを動的に生成する方法がわかりません(そして空白のあるファイル名に問題はありません)。ソースアーカイブからファイルリストを生成するには、プロセスオーバーライドを使用する必要があるようです。

理想的には、アーカイブごとに別々のダミーファイルを作成せずにrar、tgz、またはzipを変換するコマンドを持っていると思います。しかし、誰かがアーカイブ形式の1つを使用してこれを行う方法を教えてもらえれば、興味があるでしょう。他の人のためにこの問題を解決してください。

みんなありがとうございます。

ベストアンサー1

またはを使用してインストールし、マウントポイントからsquashfsファイルを生成することもできfuse-zipますarchivemount

たとえば、これはzipファイルに対して機能します。

$ mkdir /tmp/zmnt
$ fuse-zip -r /path/to/file1.zip /tmp/zmnt
$ mksquashfs /tmp/zmnt /path/to/file1.squashfs
$ fusermount -u /tmp/zmnt

おすすめ記事