温馨提示×

Linux文件压缩与解压的实用方法

小樊
44
2025-09-23 07:13:59
栏目: 智能运维

Linux文件压缩与解压实用方法

一、基础工具分类与核心逻辑

Linux文件压缩分为两类:打包工具(将多个文件/目录合并为单个归档文件,不压缩)和压缩工具(通过算法减小文件体积)。实际使用中,tar(打包工具)常与gzip/bzip2/xz(压缩工具)结合,形成.tar.gz(快速压缩)、.tar.bz2(高压缩率)、.tar.xz(极致压缩)等格式;而zip是跨平台通用格式(兼容Windows),rar则需额外安装工具。

二、常用压缩/解压命令详解

1. tar:归档+压缩一体化工具

tar是Linux最核心的归档工具,通过-z(gzip)、-j(bzip2)、-J(xz)参数实现压缩,-c(创建)、-x(解压)、-f(指定文件名)是核心参数。

  • 打包并压缩
    • 快速压缩(.tar.gz):tar -czvf archive.tar.gz file1.txt dir1/-z启用gzip,-v显示进度)
    • 高压缩率(.tar.bz2):tar -cjvf archive.tar.bz2 file1.txt dir1/-j启用bzip2,压缩率高于gzip但速度慢)
    • 极致压缩(.tar.xz):tar -cJvf archive.tar.xz file1.txt dir1/-J启用xz,压缩率最高但耗时最长)
  • 解压
    • 解压.tar.gz:tar -xzvf archive.tar.gz-x解压,-z指定gzip格式)
    • 解压.tar.bz2:tar -xjvf archive.tar.bz2-j指定bzip2格式)
    • 解压.tar.xz:tar -xJvf archive.tar.xz-J指定xz格式)
  • 实用技巧
    • 查看压缩包内容(不解压):tar -tf archive.tar.gz
    • 解压到指定目录:tar -xzvf archive.tar.gz -C /opt/target/-C指定目标目录)
    • 排除特定文件:tar -czvf archive.tar.gz dir1/ --exclude='*.tmp' --exclude='.git'--exclude排除指定文件/目录)

2. gzip/gunzip:单文件快速压缩

gzip适用于单个文件的快速压缩(压缩率中等,速度快),压缩后会删除原文件。

  • 压缩gzip file.txt(生成file.txt.gz
  • 解压gunzip file.txt.gz(生成file.txt
  • 保留原文件
    • 压缩:gzip -c file.txt > file.txt.gz-c输出到标准输出,重定向到新文件)
    • 解压:gunzip -c file.txt.gz > file.txt(解压后保留原压缩文件)

3. zip/unzip:跨平台通用压缩

zip格式兼容Windows、Mac等系统,是Linux下最常用的跨平台压缩工具。

  • 压缩zip -r archive.zip file1.txt dir1/-r递归压缩目录)
  • 解压unzip archive.zip(解压到当前目录)
  • 实用技巧
    • 解压到指定目录:unzip archive.zip -d ~/projects/-d指定目标目录)
    • 查看压缩包内容:unzip -l archive.zip-l仅列出内容)
    • 处理中文编码(避免乱码):unzip -O GBK 中文文件.zip-O指定编码,如GBK、UTF-8)

4. bzip2/bunzip2:高压缩率工具

bzip2压缩率高于gzip,但速度较慢,适合长期存储的大文件(如日志、备份)。

  • 压缩bzip2 file.txt(生成file.txt.bz2,原文件删除)
  • 解压bunzip2 file.txt.bz2(生成file.txt
  • 保留原文件
    • 压缩:bzip2 -k file.txt-k保留原文件)
    • 解压:bunzip2 -k file.txt.bz2-k保留压缩文件)

5. xz/unxz:极致压缩工具

xz压缩率最高(优于bzip2),但速度最慢,适合对空间要求极高的场景(如发行版镜像)。

  • 压缩xz -z file.txt(生成file.txt.xz,原文件删除)
  • 解压unxz file.txt.xz(生成file.txt
  • 保留原文件xz -zk file.txt-k保留原文件)

三、特殊场景解决方案

1. 批量解压当前目录所有.zip文件

使用for循环遍历所有.zip文件并解压:
for z in *.zip; do unzip "$z"; done
"$z"加引号避免文件名含空格时报错)

2. 解压中文编码压缩包

若解压时出现中文乱码,指定编码格式(如GBK):
unzip -O GBK 中文文件.zip
(需系统支持对应编码,可通过locale -a查看可用编码)

3. 解压大文件分卷

对于超过存储设备容量的大文件,可使用split命令分割后压缩,解压时合并:

  • 分割并压缩tar -czvf - large_file.iso | split -b 10G - large_file.tar.gz.(生成large_file.tar.gz.aalarge_file.tar.gz.ab等分卷)
  • 合并并解压cat large_file.tar.gz.* | tar -xzvf -cat合并分卷,tar解压)

4. 加密压缩(敏感数据)

使用zip-e参数添加密码,或tar结合gpg加密:

  • zip加密zip -r -e sensitive.zip /path/to/sensitive_data(交互式输入密码)
  • gpg加密tar czvf - /path/to/data | gpg --symmetric --cipher-algo AES256 -o data.tar.gz.gpg(生成加密文件,需输入密码)

四、最佳实践建议

  • 解压前检查:使用tar -tf(tar包)、unzip -l(zip包)查看内容,避免误解压。
  • 指定目标目录:使用-C(tar)或-d(unzip)避免文件散落在当前目录。
  • 保留原文件:重要文件压缩时使用-k参数(如gzip -kbzip2 -k),防止原文件丢失。
  • 跨平台兼容:共享文件优先使用zip格式(兼容Windows),内部使用.tar.gz(平衡速度与压缩率)。

0