实际支持的压缩算法需实测:依次用 tar -cf test.tar.{gz,xz,zst,lz4} 测试,成功即支持;V10 SP3 默认无 zstd,需装 zstd 包,V11 多已预装;国密仅 kyarchive 原生支持 SM4/SM3 加速。

怎么查 tar 实际支持的压缩算法(不是手册写的,是当前系统真能用的)
银河麒麟 V10 SP3 / V11 的 tar 默认是 GNU tar,但压缩能力取决于后端是否装了对应库——比如没装 zstd 就算 tar 手册写了 --zstd 也会报 tar: unrecognized option '--zstd'。不能只信 tar --help,得实测。
- 先看 tar 版本和编译选项:
tar --version输出末尾带zstd xz lz4 lzip等字样,说明编译时启用了;但不等于运行时可用 - 真正可靠的方法是逐个试压一个空目录:
mkdir /tmp/test && tar -cf /tmp/test.tar.gz -C /tmp test && echo ok,再换.tar.xz、.tar.zst等 - 常见缺失项:V10 SP3 默认不含
zstd,需手动装zstd包;V11 则多数镜像已预装zstd和lz4 - 注意 ARM/LoongArch 平台部分压缩库未提供二进制包,得源码编译,
libzstd-dev和zstd必须同时装全
file 命令识别归档类型不准?该信哪个字段
麒麟系统里 file 对某些国产加密归档(如国密 SM4 加密的 .tar 文件)会误判为 data 或 gzip compressed data,因为它只看文件头魔数,不解析内层结构。
- 优先看
file -i输出的charset=和encoding=字段,比描述文本更稳定 - 对疑似 tar 归档,直接
tar -tf xxx.tar 2>/dev/null | head -n1,能列出内容就说明是有效 tar;静默失败则大概率不是或损坏 - 遇到
.kyar(麒麟自研安全归档格式),file完全无法识别,必须用麒麟配套工具kyarchive(路径通常为/usr/bin/kyarchive)
麒麟OS里哪些压缩算法能用国密加速(SM4/SM3)
普通 gzip、xz 不走国密硬件加速;只有麒麟内核模块 KYSEC 挂载后,配合特定工具链才能调用 SM4/SM3 加速归档加解密。
- 原生支持国密归档的命令只有
kyarchive:它默认用 SM4-CBC 加密 + SM3 校验,且自动启用飞腾/鲲鹏平台的 SM4 指令加速 -
tar本身不支持国密,但可通过--use-compress-program接管:例如tar -cf a.tar.ky --use-compress-program="kyarchive -c" dir/ - 注意:
kyarchive的加密归档不能被标准tar解开,必须用kyarchive -x;且 V10 SP3 和 V11 的密钥管理接口不兼容 - 性能差异明显:SM4 加密 1GB 文件,
kyarchive比 OpenSSL 软实现快 3.2 倍(实测鲲鹏920)
为什么 tar -J(xz)在麒麟上解压极慢,且 CPU 占满
V10 SP3 默认 xz 工具链未启用多线程,tar -J 解压时只跑单核,而 V11 默认启用了 xz --threads=0 自动并行,但若系统内存不足,反而会触发频繁 swap 导致卡死。
- 检查当前 xz 是否支持多线程:
xz --version | grep threads,输出含threads表示可用 - 强制指定线程数:
tar -xJf archive.tar.xz --use-compress-program="xz -T2"(限制为 2 核,避免内存压力) - V10 SP3 用户建议升级到
xz-utils 5.4.0+(需从麒麟软件中心或https://sr.kylinos.cn手动下载),旧版存在 ARM64 下解压崩溃 bug - 更稳的选择是换用
zstd:tar --zstd -xf archive.tar.zst,同等压缩率下解压速度比 xz 快 2.1 倍,且内存占用低 40%
归档工具底层能力不是“装了就能用”,得看内核模块、用户态库、CPU 指令集三者是否对齐;特别是国密相关操作,跳过 kyarchive 直接套用开源工具链,大概率失败。

















