无需提取到磁盘重建,将zlib/gzip压缩的squashfs文件重新压缩为zstd的命令咨询
无需提取到磁盘重建,将zlib/gzip压缩的squashfs文件重新压缩为zstd的命令咨询
嘿,这个需求我太熟啦!不用把文件整个提取到磁盘再重新打包,咱们直接用squashfs-tools里的命令配合管道就能搞定,全程内容不落地到磁盘,效率拉满~
直接上核心命令:
unsquashfs -f -d - original.squashfs | mksquashfs - converted_zstd.squashfs -comp zstd
我给你拆解下每个部分的作用:
unsquashfs -f -d - original.squashfs:-d -是关键,指定把解压后的内容直接输出到标准输出(stdout);-f用来强制跳过一些可能的交互提示,让命令能顺畅执行。- 管道符号
|:把前面解压出来的内容直接传给后面的压缩命令,中间完全不存到磁盘。 mksquashfs - converted_zstd.squashfs -comp zstd:-表示从标准输入(stdin)读取要压缩的内容;-comp zstd明确指定用zstd算法压缩;最后生成的就是你要的zstd压缩的squashfs文件converted_zstd.squashfs。
额外给你两个实用小技巧:
- 调整zstd压缩级别:如果想要更高的压缩率(或者更快的压缩速度),可以用
-Xcompression-level参数,比如设置级别10(zstd级别范围1-22,级别越高压缩率越好但速度越慢),命令变成:
unsquashfs -f -d - original.squashfs | mksquashfs - converted_zstd.squashfs -comp zstd -Xcompression-level 10
- 检查工具是否安装:要是执行命令时报错,大概率是没装
squashfs-tools,用系统包管理器装就行,比如Debian/Ubuntu系跑sudo apt install squashfs-tools,RHEL/CentOS系跑sudo dnf install squashfs-tools。
备注:内容来源于stack exchange,提问作者usilo
相关产品推荐
相关产品推荐

