Linux下tar/bsdtar设置0压缩级(仅存储)的实现方法
在Linux中实现无压缩归档(存储模式)的CLI命令
一、直接使用tar/bsdtar实现无压缩存储
tar(包括GNU tar和bsdtar)默认就处于仅存储、无压缩的模式,这正是你需要的“0压缩级别”效果,无需额外指定压缩参数:
GNU tar命令:
- 打包:
tar -cf archive.tar /path/to/target_files_or_dirs - 直接解压:
tar -xf archive.tar - 管道解压:
cat archive.tar | tar -xf -
bsdtar命令:
- 打包:
bsdtar -cf archive.tar /path/to/target_files_or_dirs - 直接解压:
bsdtar -xf archive.tar - 管道解压:
cat archive.tar | bsdtar -xf -
你之前尝试的--level=选项无效,是因为这个参数属于gzip、xz这类压缩工具的专属选项,必须配合tar的压缩触发参数(比如-z对应gzip、-J对应xz)才能生效,单独给tar加--level没有意义。
二、若需配合压缩工具实现无压缩(支持管道解压)
如果需要生成带压缩后缀但实际无压缩的归档文件,或用其他工具替代,以下是可行方案:
1. gzip(无压缩模式)
gzip的-0参数强制仅存储、不压缩:
- 单文件打包:
gzip -c -0 /path/to/single_file > file.gz - 配合tar打包:
tar -z --level=0 -cf archive.tar.gz /path/to/files(本质是tar调用gzip以0级别压缩) - 管道解压:
cat file.gz | gzip -d或cat archive.tar.gz | tar -zxf -
2. zip(仅存储模式)
zip的-0参数指定仅存储,不压缩:
- 打包:
zip -0 archive.zip /path/to/files - 管道解压(单文件或提取内容到标准输出):
cat archive.zip | funzip(单文件场景)或unzip -p archive.zip(多文件内容输出到stdout)
3. xz(无压缩模式)
xz的-0参数对应无压缩:
- 配合tar打包:
tar -J --level=0 -cf archive.tar.xz /path/to/files - 管道解压:
cat archive.tar.xz | tar -Jxf -
内容的提问来源于stack exchange,提问作者user21630036
相关产品推荐
相关产品推荐

