Skip to content

压缩与归档命令

压缩与归档命令用于减小文件体积、合并多个文件以及备份数据,是系统管理和数据存储的常用工具。

zip - 压缩工具

zip 是 Linux 下常用的压缩工具,支持跨平台(Windows/macOS/Linux),生成 .zip 格式的压缩文件。与 gzip 不同,zip 可以同时压缩多个文件和目录,并保留文件权限和目录结构。

语法格式

bash
zip [选项] 压缩文件名.zip 文件或目录...

选项

-r递归压缩目录zip -r archive.zip mydir/
-q静默模式(不显示输出)zip -q secret.zip file.txt
-e加密压缩(设置密码)zip -e secure.zip sensitive.txt
-1~-9压缩级别(1 最快压缩率最低,9 最慢压缩率最高)zip -9 data.zip largefile
-v显示详细压缩信息zip -v log.zip *.log
-m压缩后删除原文件zip -m backup.zip old_data.txt
-x排除指定文件zip archive.zip * -x "*.tmp"
-FS同步更新压缩包(仅添加新 / 修改的文件)zip -FS update.zip changed.txt
-s分卷压缩(指定每卷大小,如 -s 100mzip -s 100m split.zip bigfile
-T测试压缩包完整性zip -T archive.zip

经典案例

bash
zip archive.zip file1.txt file2.txt  			# 压缩多个文件
zip -r backup.zip /path/to/directory  			# 包含子目录
zip -e secure.zip secret.txt  					# 交互式输入密码
zip -r logs.zip /var/log/ -x "*.tmp"  			# 排除 .tmp 文件
zip -r test.zip test/ -x "test/1.txt" "test/2.txt" # 排除多个文件
zip -T archive.zip  							# 检查是否损坏

注意事项

  1. 默认不删除原文件zip 不会自动删除源文件,除非用 -m
  2. Windows 兼容性zip 格式在 Windows 上可直接打开,而 .tar.gz 需要额外工具
  3. 密码安全-P 选项会暴露密码在命令行历史,建议用 -e 交互式输入
  4. 大文件压缩zip 对超大文件(>4GB)支持不如 7ztar 稳定

unzip - 解压 ZIP 格式压缩文件

unzip 是用于解压 .zip 格式压缩文件的工具,支持查看压缩包内容、解压到指定目录、选择性解压文件等功能。它是 zip 命令的配套工具。

语法格式

bash
unzip [选项] 压缩包.zip [文件...] [-x 排除文件...] [-d 输出目录]

选项

选项描述示例
-d dir解压到指定目录unzip data.zip -d /tmp
-l仅列出压缩包内容(不解压)unzip -l archive.zip
-v详细模式(显示更多信息)unzip -v archive.zip
-o覆盖已存在文件(不提示)unzip -o backup.zip
-n不覆盖已存在文件unzip -n backup.zip
-x files排除指定文件unzip data.zip -x "*.tmp"
-P pwd使用密码解压(不安全)unzip -P 1234 secret.zip
-t测试压缩包完整性unzip -t archive.zip
-j丢弃路径信息(所有文件解压到当前目录)unzip -j flat.zip
-q静默模式(不显示输出)unzip -q silent.zip

经典案例

bash
# 基本解压
unzip archive.zip
# 解压到指定目录
unzip data.zip -d /path/to/target
# 查看压缩包内容
unzip -l archive.zip
# 只解压.txt文件
unzip archive.zip "*.txt"
# 排除.tmp文件
unzip archive.zip -x "*.tmp"
# 测试压缩包完整性
unzip -t archive.zip

gzip - 文件压缩工具

gzip (GNU zip) 是 Linux 系统中常用的文件压缩工具,采用 LZ77 算法实现高效压缩,生成 .gz 后缀的压缩文件。

语法格式

bash
gzip [选项] [文件...]
gunzip [选项] [文件.gz...]
zcat [文件.gz...]

选项

选项描述示例
-d解压文件(等同于 gunzipgzip -d file.gz
-c保留原始文件(输出到标准输出)gzip -c file > file.gz
-k保留原始文件(不删除)gzip -k file
-1~-9压缩级别(1 最快压缩率最低,9 最慢压缩率最高)gzip -9 largefile
-v显示压缩 / 解压进度gzip -v data.log
-t测试压缩文件完整性gzip -t backup.gz
-l显示压缩文件信息gzip -l archive.gz
-r递归处理目录gzip -r mydir
-f强制覆盖输出文件gzip -f logfile

经典案例

bash
gzip filename.txt  				# 生成 filename.txt.gz 并删除原文件
gzip -k access.log				# 保留原文件压缩
gzip -v *.log      				# 显示压缩进度
gzip -r /var/log/  				# 注意:只压缩文件不打包目录结构
gzip -d file.gz					# 解压缩
gunzip file.gz					# 解压缩
zcat file.gz       				# 不解压查看内容
gunzip -c file.gz  				# 不解压查看内容

WARNING

动态文件压缩可能会损坏文件内容。如音视频文件。

tar- 打包归档工具

tar(Tape Archive)是 Linux 下最常用的归档工具,用于打包多个文件/目录(不压缩),或结合 gzip/bzip2/xz 进行压缩

语法格式

bash
# 打包/压缩
tar [选项] 输出文件.tar[.gz|.bz2|.xz] 文件或目录...

# 解包/解压
tar [选项] 输入文件.tar[.gz|.bz2|.xz] [-C 目标目录]

选项

选项描述示例
-c创建归档文件tar -cvf archive.tar dir/
-x解压归档文件tar -xvf archive.tar
-f指定归档文件名(必须放在最后)tar -cvf backup.tar /data
-v显示详细过程tar -cvf logs.tar /var/log
-z使用 gzip 压缩 / 解压(.tar.gztar -czvf archive.tar.gz dir/
-j使用 bzip2 压缩 / 解压(.tar.bz2tar -cjvf archive.tar.bz2 dir/
-J使用 xz 压缩 / 解压(.tar.xztar -cJvf archive.tar.xz dir/
-t查看归档内容(不解压)tar -tvf archive.tar
-r追加文件到归档tar -rvf archive.tar newfile.txt
-u仅添加比归档中更新的文件tar -uvf archive.tar modified.txt
--exclude排除指定文件 / 目录**(放在打包名后面)**tar -cvf backup.tar --exclude="*.tmp" dir/
-C解压到指定目录tar -xvf archive.tar -C /target
--auto-compress自动根据扩展名选择压缩方式tar -xvf archive.tar --auto-compress
-p保留文件权限tar -pcvf archive.tar dir/
-k不覆盖已有文件tar -kxvf archive.tar

经典案例

1. 基本打包(不压缩)

bash
tar -cvf archive.tar /path/to/directory  # 打包目录
tar -tvf archive.tar                     # 查看内容
tar -xvf archive.tar                     # 解包

2. 压缩(gzip / bzip2 / xz

bash
# gzip 压缩(.tar.gz)
tar -czvf archive.tar.gz /path/to/directory

# bzip2 压缩(.tar.bz2)
tar -cjvf archive.tar.bz2 /path/to/directory

# xz 压缩(.tar.xz,压缩率最高但最慢)
tar -cJvf archive.tar.xz /path/to/directory

3. 解压

bash
# 自动检测压缩方式并解压
tar -xvf archive.tar.gz

# 解压到指定目录
tar -xvf archive.tar.gz -C /target/directory

4. 排除某些文件

bash
tar -czvf backup.tar.gz --exclude="*.log" /path/to/directory

5. 追加文件到已有归档

bash
tar -rvf archive.tar newfile.txt  # 仅适用于未压缩的 .tar

注意事项

  1. -f 必须放在最后,否则会报错 ❌ tar -fc archive.tar /dir → ✅ tar -cvf archive.tar /dir
  2. -z / -j / -J 仅用于压缩,解压时 tar 会自动检测
  3. tar 默认覆盖文件,加 -k 可避免
  4. tar 不能加密,需配合 gpgzip -e
  5. --exclude排除选项在Centos7系统中放在打包名后面或者最后都可以,其它的要放在打包名后面(*.tar.gz --exclude="*.log")

bzip2 - 块排序文件压缩工具

命令简介

bzip2 是一个高效的文件压缩工具,采用Burrows-Wheeler块排序压缩算法和霍夫曼编码,通常能生成比传统gzip更小的压缩文件。

语法格式

bash
bzip2 [选项] [文件...]

选项

选项描述示例
-d解压文件bzip2 -d file.bz2
-k保留原始文件bzip2 -k file
-v显示压缩比信息bzip2 -v file
-1-9设置压缩级别(默认9)bzip2 -5 file

经典案例

bash
# 压缩文件并保留原始文件
bzip2 -k important.log

# 解压文件到当前目录
bzip2 -d archive.bz2

注意事项

  1. 压缩后的文件会默认删除源文件(除非使用-k选项)
  2. 不支持压缩目录(需先使用tar打包)

bunzip2 - bzip2解压工具

命令简介

bunzip2bzip2 -d的等价命令,专门用于解压.bz2格式文件。

语法格式

bash
bunzip2 [选项] [文件...]

选项

选项描述示例
-k保留压缩文件bunzip2 -k file.bz2
-v显示详细信息bunzip2 -v file.bz2

经典案例

bash
# 解压文件并保留压缩包
bunzip2 -k backup.bz2

xz - LZMA压缩工具

命令简介

xz 使用LZMA2算法提供高压缩比,常用于软件包分发(如Linux内核镜像)。

语法格式

bash
xz [选项] [文件...]

选项

选项描述示例
-d解压文件xz -d file.xz
-k保留原始文件xz -k file
-9最高压缩级别xz -9 file
-T N使用N个线程xz -T4 file

经典案例

bash
# 多线程压缩大文件
xz -T8 -9 huge_file.db

注意事项

  1. 高压缩级别会显著增加内存使用量
  2. 解压时需要兼容的xz版本

unxz - xz解压工具

命令简介

unxzxz -d的等价命令,专门用于解压.xz格式文件。

语法格式

bash
unxz [选项] [文件...]

选项

选项描述示例
-k保留压缩文件unxz -k file.xz
-T N多线程解压unxz -T4 file.xz

7z - 7-Zip归档工具

命令简介

7z 支持多种压缩算法(LZMA/LZMA2等),可创建加密压缩包。

语法格式

bash
7z <> [选项] 归档文件 [文件...]

选项

选项描述示例
a添加文件到压缩包7z a archive.7z file
x完整路径解压7z x archive.7z
-p设置密码7z a -p123 archive.7z file
-mhe=on加密文件名7z a -mhe=on -p123 archive.7z

经典案例

bash
# 创建加密压缩包
7z a -psecret -mhe=on confidential.7z /data/

p7zip - 7z命令行版本

命令简介

p7zip 是7-Zip的POSIX版本,提供7za命令(功能与7z类似)。


rar - RAR压缩工具

命令简介

rar 是专有压缩格式工具,需单独安装,支持分卷压缩。

语法格式

bash
rar <> [选项] 归档文件 [文件...]

选项

选项描述示例
a添加文件rar a backup.rar file
x完整路径解压rar x backup.rar
-p设置密码rar a -p123 backup.rar
-vNNm分卷压缩(单位MB)rar a -v100m archive.rar bigfile

unrar - RAR解压工具

命令简介

unrar 专门用于解压RAR格式文件。

语法格式

bash
unrar <> [选项] 归档文件

选项

选项描述示例
x完整路径解压unrar x backup.rar
e解压到当前目录unrar e backup.rar
-p密码解压unrar x -p123 backup.rar

zstd - Facebook实时压缩工具

命令简介

zstd 提供高速压缩/解压,适合需要快速IO的场景。

语法格式

bash
zstd [选项] [文件]

选项

选项描述示例
-d解压文件zstd -d file.zst
-T N多线程操作zstd -T4 file
--fast=N速度优先模式zstd --fast=3 file

经典案例

bash
# 快速压缩日志文件
zstd --fast=3 -T8 access.log

lbzip2 - 并行bzip2实现

命令简介

lbzip2bzip2的多线程版本,显著提升大文件压缩速度。

语法格式

bash
lbzip2 [选项] [文件...]

选项

选项描述示例
-n N使用N个处理器lbzip2 -n4 bigfile
-d解压文件lbzip2 -d file.bz2

经典案例

bash
# 使用所有CPU核心压缩
lbzip2 -n $(nproc) database.sql

注意事项

  1. 压缩结果与标准bzip2完全兼容
  2. 建议用于1GB以上的大文件