Zip
如何從 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 .
其中一些檔案包含數千個單獨的文件,其中一些文件名中包含空格或其他特殊字元。
我查看了 README,我想我需要使用該
-pf <pseudo-file>
選項,但我不確定如何動態創建偽文件(而且文件名也沒有空格問題)。我想我需要使用程序替換來從源存檔中創建文件列表。理想情況下,我希望有一個能夠轉換任何 rar、tgz 或 zip 的命令,而不必為每個存檔單獨創建偽文件,但是如果有人能告訴我如何使用其中一種存檔格式來做到這一點,那麼希望我能為其他人解決這個問題。
謝謝大家。
您可以使用
fuse-zip
或掛載它們,archivemount
然後從掛載點創建 squashfs 文件。例如,這適用於 zip 文件:
$ mkdir /tmp/zmnt $ fuse-zip -r /path/to/file1.zip /tmp/zmnt $ mksquashfs /tmp/zmnt /path/to/file1.squashfs $ fusermount -u /tmp/zmnt
tar2sqfs
來自 https://github.com/AgentD/squashfs-tools-ng/ _至少可能是一個值得研究的替代方案。