news 2026/4/18 3:42:20

shell编程 - 压缩命令合集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
shell编程 - 压缩命令合集

文章目录

  • 1. tar命令详解
    • 1.1 基本介绍
    • 1.2 常用参数
    • 1.3 常用组合
    • 1.4 高级技巧
  • 2. zip/unzip命令详解
    • 2.1 zip基本用法
    • 2.2 unzip基本用法
    • 2.3 高级用法
  • 3. gzip/gunzip命令详解
    • 3.1 gzip基本用法
    • 3.2 gunzip基本用法
    • 3.3 相关工具集
    • 3.4 高级示例
  • 4. bzip2/bunzip2命令详解
    • 4.1 bzip2基本用法
    • 4.2 bunzip2基本用法
    • 4.3 相关工具集
    • 4.4 高级示例
  • 5. xz压缩工具详解
    • 5.1 xz基本介绍
    • 5.2 基本用法
    • 5.3 与tar结合使用
    • 5.4 相关工具集
    • 5.5 高级配置选项
    • 5.6 高级示例
  • 6. 压缩算法综合对比
    • 6.1 特性对比表
    • 6.2 适用场景指南

1. tar命令详解

1.1 基本介绍

tar (tape archive) 是一个归档工具,用于将多个文件打包成单个文件。它本身不压缩数据,但常与压缩工具配合使用。

1.2 常用参数

参数描述
-c创建归档
-x解包归档
-t查看归档内容
-v显示详细信息
-f指定归档文件名
-z使用gzip压缩/解压
-j使用bzip2压缩/解压
-J使用xz压缩/解压
-p保留文件权限
-C指定解压目录
–exclude排除文件/目录

1.3 常用组合

# 1. 创建简单的tar归档tar-cvf archive.tar file1.txt file2.txt directory/# 2. 查看归档内容tar-tvf archive.tar# 3. 解压归档tar-xvf archive.tar# 4. 创建并压缩(各种格式)tar-czvf archive.tar.gz directory/# gzip压缩tar-cjvf archive.tar.bz2 directory/# bzip2压缩tar-cJvf archive.tar.xz directory/# xz压缩# 5. 解压各种压缩格式tar-xzvf archive.tar.gz# gzip解压tar-xjvf archive.tar.bz2# bzip2解压tar-xJvf archive.tar.xz# xz解压# 6. 解压到指定目录tar-xzvf archive.tar.gz -C /target/path# 7. 排除特定文件tar-czvf backup.tar.gz --exclude='*.tmp'--exclude='cache/*'/home/user# 8. 增量备份(基于时间)tar-czvf backup-$(date+%Y%m%d).tar.gz --newer-mtime="2024-01-01"/data# 9. 只解压特定文件tar-xzvf archive.tar.gz"path/to/specific/file.txt"

1.4 高级技巧

# 创建带时间戳的备份tar-czf"backup-$(date+%Y%m%d_%H%M%S).tar.gz"/data# 使用通配符tar-czf documents.tar.gz *.pdf *.docx# 保留符号链接(-h参数)tar-czhf backup.tar.gz /etc# 压缩时显示进度(需要pv工具)tar-cf - large_dir/|pv|gzip>large_dir.tar.gz# 验证归档完整性tar-df archive.tar.gz# 对比归档与本地文件tar-tzf archive.tar.gz>/dev/null&&echo"Archive is valid"

2. zip/unzip命令详解

2.1 zip基本用法

# 1. 基本压缩ziparchive.zip file1.txt file2.txt# 2. 递归压缩目录zip-r archive.zip directory/# 3. 设置压缩级别(0-9)zip-9 maximum.zip largefile.dat# 最高压缩zip-1 fastest.zip logfile.txt# 最快压缩zip-0 store.zip already_compressed# 仅存储,不压缩# 4. 加密压缩zip-e secure.zip sensitive_file.txt# 交互式输入密码zip-r -P password secure.zip folder/# 指定密码(不安全)# 5. 分卷压缩zip-r -s 100m split.zip large_folder/# 每卷100MB# 6. 排除文件zip-r archive.zip folder/ -x"*.log""temp/*"# 7. 向已有归档添加文件ziparchive.zip newfile.txt# 8. 删除归档中的文件zip-d archive.zip file_to_remove.txt# 9. 更新归档中的文件zip-u archive.zip modified_file.txt# 10. 跨平台压缩(避免额外属性)zip-r -X archive.zip folder/# 不保存额外文件属性

2.2 unzip基本用法

# 1. 基本解压unziparchive.zip# 2. 解压到指定目录unziparchive.zip -d /target/path# 3. 查看归档内容unzip-l archive.zipunzip-Z -l archive.zip# 更详细的信息# 4. 测试归档完整性unzip-t archive.zip# 5. 解压时不覆盖已存在文件unzip-n archive.zip# 6. 解压时总是覆盖unzip-o archive.zip# 7. 解压特定文件unziparchive.zip"specific/file.txt"unziparchive.zip"*.txt""images/*.jpg"# 使用通配符# 8. 静默解压unzip-q archive.zip# 9. 解压加密文件unzip-P password encrypted.zip# 10. 解压并重命名冲突文件unzip-B archive.zip# 自动重命名冲突文件

2.3 高级用法

# 创建自解压ZIP(需要SFX模块)zip-r -sfx archive.zip folder/# 或cat/usr/share/doc/p7zip/DOCS/SFX_Module/7zS.sfx archive.zip>archive.exe# 批量处理# 压缩当前目录所有子目录fordirin*/;dozip-r"${dir%/}.zip""$dir";done# 解压所有ZIP文件forzipfilein*.zip;dounzip"$zipfile";done# 修复损坏的ZIP文件zip-F broken.zip --out repaired.zip

3. gzip/gunzip命令详解

3.1 gzip基本用法

# 1. 基本压缩(删除原文件)gzipfilename.txt# 生成 filename.txt.gz# 2. 压缩并保留原文件gzip-k filename.txt# -k 选项(较新版本)gzip-c filename.txt>filename.txt.gz# 标准方法# 3. 设置压缩级别(1-9)gzip-1 fast.txt# 最快压缩gzip-6 standard.txt# 默认级别gzip-9 best.txt# 最佳压缩# 4. 递归压缩目录gzip-r directory/# 5. 压缩到标准输出catfile.txt|gzip-c>compressed.gzgzip-c file.txt>file.txt.gz# 6. 测试压缩文件gzip-t file.gz# 7. 显示压缩信息gzip-l file.gz# 8. 强制压缩gzip-f filename.txt# 即使压缩效果不好或文件有多个链接# 9. 压缩多个文件gzipfile1.txt file2.txt file3.txt

3.2 gunzip基本用法

# 1. 基本解压(删除.gz文件)gunzip file.gz# 2. 解压并保留.gz文件gunzip -k file.gz gunzip -c file.gz>file.txt# 3. 解压到标准输出gunzip -c file.gz# 4. 递归解压目录gunzip -r directory/# 5. 解压并测试gunzip -t file.gz# 6. 解压多个文件gunzip file1.gz file2.gz file3.gz# 7. 解压为指定名称gunzip -c archive.gz>output.txt

3.3 相关工具集

# zcat - 查看压缩文件内容zcat file.gz zcat file.gz|head-20# 查看前20行# zless/zmore - 分页查看zless file.gz zmore file.gz# zgrep - 在压缩文件中搜索zgrep"error"logfile.gz zgrep -i"warning"*.gz# 忽略大小写# zdiff - 比较压缩文件zdiff file1.gz file2.gz# zcmp - 二进制比较zcmp file1.gz file2.gz# gzexe - 创建自解压脚本gzexe script.sh# 压缩脚本自身

3.4 高级示例

# 实时压缩日志tail-f access.log|gzip>>access.log.gz# 压缩并计算校验和gzip-c data.bin|md5sum# 批量压缩当前目录所有.txt文件find.-name"*.txt"-execgzip{}\;# 批量解压当前目录所有.gz文件find.-name"*.gz"-exec gunzip{}\;# 压缩并分割大文件gzip-c largefile.iso|split-b 100m - largefile.iso.gz.part# 合并并解压分割文件catlargefile.iso.gz.part*|gunzip -c>largefile.iso

4. bzip2/bunzip2命令详解

4.1 bzip2基本用法

# 1. 基本压缩(删除原文件)bzip2filename.txt# 生成 filename.txt.bz2# 2. 压缩并保留原文件bzip2-k filename.txtbzip2-c filename.txt>filename.txt.bz2# 3. 设置压缩级别(1-9)bzip2-1 fast.txt# 最快压缩bzip2-9 best.txt# 最佳压缩(默认)# 4. 显示压缩信息bzip2-v filename.txt# 显示压缩比例# 5. 测试压缩文件bzip2-t file.bz2# 6. 强制压缩bzip2-f filename.txt# 7. 解压缩(bzip2也可用于解压)bzip2-d file.bz2# 8. 限制内存使用bzip2-s512file.txt# 限制为512KB内存

4.2 bunzip2基本用法

# 1. 基本解压(删除.bz2文件)bunzip2 file.bz2# 2. 解压并保留.bz2文件bunzip2 -k file.bz2 bunzip2 -c file.bz2>file.txt# 3. 解压到标准输出bunzip2 -c file.bz2# 4. 解压多个文件bunzip2 file1.bz2 file2.bz2# 5. 解压并测试bunzip2 -t file.bz2# 6. 强制解压bunzip2 -f file.bz2

4.3 相关工具集

# bzcat - 查看压缩文件内容bzcat file.bz2 bzcat file.bz2|grep"pattern"# bzless/bzmore - 分页查看bzless file.bz2 bzmore file.bz2# bzgrep - 在压缩文件中搜索bzgrep"error"logfile.bz2 bzgrep -c"warning"*.bz2# 统计匹配次数# bzdiff - 比较压缩文件bzdiff file1.bz2 file2.bz2# bzcmp - 二进制比较bzcmp file1.bz2 file2.bz2

4.4 高级示例

# 批量压缩日志文件find/var/log -name"*.log"-size +1M -execbzip2{}\;# 并行压缩(使用pbzip2)pbzip2 -k largefile.dat# 使用所有CPU核心pbzip2 -p4 file.txt# 使用4个线程# 压缩MySQL备份mysqldump -u user -p database|bzip2>backup.sql.bz2# 创建分卷bzip2压缩bzip2-c largefile.dat|split-b 50m - largefile.dat.bz2.part# 检查压缩率ls-lh file.txt file.txt.bz2echo"压缩率: $(echo "scale=2;$(wc-c<file.txt.bz2)*100/$(wc-c<file.txt)"|bc)%"

5. xz压缩工具详解

5.1 xz基本介绍

xz是一个使用LZMA2压缩算法的工具,提供比gzip和bzip2更高的压缩率,适合需要最大限度减少文件大小的场景。

5.2 基本用法

# 1. 基本压缩(删除原文件)xz filename.txt# 生成 filename.txt.xz# 2. 压缩并保留原文件xz -k filename.txt xz -c filename.txt>filename.txt.xz# 3. 设置压缩级别(0-9)xz -0 fast.txt# 最快压缩xz -6 standard.txt# 默认级别xz -9 best.txt# 最佳压缩# 4. 解压文件xz -d file.xz unxz file.xz# 等价命令# 5. 多线程压缩xz -T0 file.txt# 使用所有CPU核心xz -T4 file.txt# 使用4个线程# 6. 显示压缩信息xz -l file.xz xz -lv file.xz# 详细信息# 7. 测试压缩文件xz -t file.xz# 8. 极端压缩模式xz --extreme file.txt# 尝试更好压缩(更慢)

5.3 与tar结合使用

# 创建.tar.xz归档tar-cJvf archive.tar.xz directory/# 使用-J选项tar--xz -cvf archive.tar.xz directory/# 使用--xz选项tarcf - directory/|xz>archive.tar.xz# 解压.tar.xz归档tar-xJvf archive.tar.xztar--xz -xvf archive.tar.xz xz -dc archive.tar.xz|tar-xvf -# 查看.tar.xz内容tar-tJvf archive.tar.xz xz -dc archive.tar.xz|tar-tvf -

5.4 相关工具集

# xzcat - 查看压缩文件xzcat file.xz xzcat file.xz|head-50# xzless/xzmore - 分页查看xzless file.xz xzmore file.xz# xzgrep - 在压缩文件中搜索xzgrep"error"logfile.xz xzgrep -B2 -A2"critical"*.xz# 显示匹配前后2行# xzdiff - 比较压缩文件xzdiff file1.xz file2.xz# xzcmp - 二进制比较xzcmp file1.xz file2.xz

5.5 高级配置选项

# 设置字典大小xz --lzma2=dict=64M largefile.vdi# 64MB字典# 设置匹配查找器xz --lzma2=mf=hc4 binary.bin# 适合二进制xz --lzma2=mf=bt4 text.txt# 适合文本# 设置压缩模式xz --lzma2=mode=fast file.txt# 快速模式xz --lzma2=mode=normal file.txt# 正常模式(默认)# 设置校验类型xz --check=crc32 file.txt# CRC32(默认)xz --check=sha256 file.txt# SHA-256(更安全)xz --check=none file.txt# 无校验(更快)# 限制内存使用xz --memlimit=128M hugefile.bin# 限制128MB内存

5.6 高级示例

# 并行压缩(使用pixz)pixz -k largefile.dat# 使用所有核心tar-I pixz -cf archive.tar.xz directory/# 创建可恢复的压缩xz --single-stream file.txt# 单流模式# 优化压缩参数# 文本文件优化xz --lzma2=mode=normal,nice=273,match=273textfile.txt# 二进制文件优化xz --lzma2=mode=fast,mf=hc4 binaryfile.bin# 批量转换其他格式为xzforfilein*.gz;dogunzip -c"$file"|xz -c>"${file%.gz}.xz"done# 压缩流数据ddif=/dev/sdabs=1M|xz -c>disk_image.xz

6. 压缩算法综合对比

6.1 特性对比表

特性gzipbzip2xzzip
压缩算法DEFLATEBurrows-WheelerLZMA2DEFLATE
压缩率中等最高中等
压缩速度很慢中等
解压速度很快中等
CPU使用很高中等
内存使用中等
默认扩展名.gz.bz2.xz.zip
多文件支持需配合tar需配合tar需配合tar原生支持
加密支持
跨平台性优秀良好良好优秀

6.2 适用场景指南

1.gzip最佳场景

  • 日志文件压缩
  • Web服务器内容压缩(gzip编码)
  • 需要快速压缩/解压的场景
  • 内存受限的环境

2.bzip2最佳场景

  • 源代码分发
  • 文档归档
  • 需要较好压缩率但内存有限的环境

3.xz最佳场景

  • 软件发行包(如.txz)
  • 长期备份归档
  • 需要最高压缩比的场景
  • 网络传输需要最小化数据量
  1. zip最佳场景
  • Windows/Linux跨平台文件交换
  • 需要加密压缩
  • 需要自解压归档
  • 图形界面环境
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 19:07:32

收藏!AI 大模型时代,Java 程序员的高薪转型之路(小白必看)

试想这样的全新编程场景&#xff1a;打开多个 Claude Code 对话窗口&#xff0c;为每个窗口赋予专属 “岗位职能”—— 一个专攻前端页面的快速编写&#xff0c;一个聚焦后端业务逻辑的开发实现&#xff0c;一个专注测试用例的设计与校验&#xff0c;还有一个专门解决编码过程中…

作者头像 李华
网站建设 2026/3/13 9:03:03

深度测评10个降AIGC平台 千笔AI帮你轻松降AI率

深度测评10个降AIGC平台 千笔AI帮你轻松降AI率 AI降重工具&#xff1a;让论文更自然&#xff0c;更安全 在当今学术写作中&#xff0c;越来越多的学生开始借助AI工具进行论文撰写。然而&#xff0c;随着各大高校对AIGC&#xff08;人工智能生成内容&#xff09;检测的重视&am…

作者头像 李华
网站建设 2026/4/18 0:59:41

基于MATLAB的二维医学图像分割方法的研究

基于MATLAB的二维医学图像分割方法的研究 第一章 绪论 二维医学图像分割是医学影像分析的核心环节&#xff0c;其目的是从CT、MRI、超声等影像中精准提取病灶、器官等目标区域&#xff0c;为疾病诊断、手术规划、疗效评估提供数据支撑。传统手工分割方式依赖医师经验&#xf…

作者头像 李华
网站建设 2026/4/14 20:48:42

【Linux命令大全】008.磁盘维护之mkisofs命令(实操篇)

【Linux命令大全】008.磁盘维护之mkisofs命令&#xff08;实操篇&#xff09; ✨ 本文为Linux系统磁盘维护命令的全面汇总与深度优化&#xff0c;结合图标、结构化排版与实用技巧&#xff0c;专为高级用户和系统管理员打造。 (关注不迷路哈&#xff01;&#xff01;&#xff01…

作者头像 李华
网站建设 2026/4/17 18:21:46

双非背景如何逆袭腾讯T8 AI产品经理offer?大模型求职实战经验全分享,建议收藏!

文章讲述了双非背景的数据产品经理如何通过针对性辅导获得腾讯T8 AI产品经理offer的案例。学员面临学历硬伤、认知断层和表达误区三大问题&#xff0c;通过项目镀金、方法论迁移和话术洗牌等策略提升竞争力。面试过程中需深入理解大模型技术、AI产品全生命周期管理及腾讯云智能…

作者头像 李华
网站建设 2026/3/14 15:32:19

34合1黑科技工具箱!大神整合的免费软件套装

下载链接 https://pan.freedw.com/s/nDCayj 今天给大家安利一个超级实用的黑科技工具箱&#xff0c;里面集成了34款超好用的小软件&#xff0c;全都是日常能用到的实用工具&#xff0c;重点是完全免费还没广告&#xff0c;真的太良心了&#xff01; 打开软件就能看到24个常用…

作者头像 李华