linux中压缩解压需按格式匹配工具:tar用于.tar/.tar.gz等归档(-c创建、-x解压、-z/gzip、-j/bzip2、-j/xz);zip/unzip跨平台;rar/unrar处理rar;gzip仅压缩单文件为.gz。

如果您在Linux系统中需要对文件或目录进行压缩归档或解压提取,但不确定应使用哪种命令及对应参数,则可能是由于未掌握不同压缩格式与工具的匹配关系。以下是解决此问题的步骤:
一、tar命令:通用打包与多格式压缩解压
tar本身不执行压缩,而是调用gzip、bzip2、xz等后端程序完成压缩/解压,适用于.tar、.tar.gz、.tar.bz2、.tar.xz等多种格式,是Linux中最基础且最灵活的归档工具。
1、将当前目录下所有内容打包为未压缩的tar归档:tar -cvf archive.tar *
2、将目录mydata打包并用gzip压缩为.tar.gz格式:tar -czvf mydata.tar.gz mydata/
3、将目录mydata打包并用bzip2压缩为.tar.bz2格式:tar -cjvf mydata.tar.bz2 mydata/
4、解压.tar.gz文件到当前目录:tar -xzvf package.tar.gz
5、解压.tar.bz2文件到指定目录/tmp/extract:tar -xjvf package.tar.bz2 -C /tmp/extract
6、仅查看.tar.gz包内文件列表而不解压:tar -tzvf package.tar.gz
二、zip/unzip命令:跨平台兼容性压缩方案
zip格式具有良好的Windows/Linux/macOS互通性,适合需在多系统间交换数据的场景;unzip用于解压,支持密码保护及部分文件提取。
1、递归压缩当前目录全部内容为filename.zip:zip -r filename.zip ./
2、压缩时排除特定文件(如log/*.log):zip -r archive.zip . -x "log/*.log"
3、解压filename.zip到当前目录:unzip filename.zip
4、解压到指定目录/home/user/backup并强制覆盖同名文件:unzip -o -d /home/user/backup filename.zip
5、仅解压zip包中某个子路径下的文件(如docs/report.pdf):unzip filename.zip "docs/report.pdf"
三、rar/unrar命令:处理专有RAR格式文件
RAR格式由WinRAR主导,压缩率高但非开源;Linux需安装rar和unrar工具才能支持,常用于接收来自Windows用户的RAR压缩包。
1、确认系统已安装rar与unrar:which rar unrar
2、压缩当前目录为archive.rar(需先安装rar):rar a archive.rar ./
3、解压archive.rar中全部文件到当前目录:unrar x archive.rar
4、解压archive.rar中全部文件到指定目录/opt/data:unrar x archive.rar /opt/data/
5、仅解压archive.rar中特定类型文件(如*.txt):unrar e archive.rar "*.txt"
四、gzip/gunzip命令:单文件高效压缩专用工具
gzip仅作用于单个文件,不支持目录直接压缩,常用于快速减小日志、文本等大文件体积;生成.gz后缀文件,原始文件会被替换删除。
1、压缩file.txt为file.txt.gz并删除原文件:gzip file.txt
2、压缩时不删除原文件,保留file.txt同时生成file.txt.gz:gzip -c file.txt > file.txt.gz
3、解压file.txt.gz并恢复为file.txt:gunzip file.txt.gz
4、查看.gz文件内容而不解压(适用于文本类压缩文件):zcat file.txt.gz
5、以最高压缩比(-9)压缩large.log:gzip -9 large.log
五、综合判断与格式识别方法
面对未知后缀的压缩文件,需先确认其真实格式再选择对应命令;错误使用工具可能导致报错或数据损坏。
1、查看文件类型而非仅依赖扩展名:file unknown_archive
2、查看.tar.gz文件是否为真实gzip压缩:gzip -t unknown.tar.gz
3、查看zip文件完整性(无解压):zip -T archive.zip
4、查看rar文件结构信息:unrar l archive.rar
5、对疑似损坏的tar包尝试列出内容(跳过错误):tar -tf broken.tar --ignore-zeros











