Linux常用文件压缩与打包命令指南
gzip 压缩工具
gzip 是 Linux 下最常用的压缩工具之一,主要针对单个文件进行压缩处理,无法直接对目录进行操作。
# 压缩指定文件,完成后原文件会被替换为 .gz 文件
gzip my_log.txt
# 还原压缩文件
gzip -d my_log.txt.gz
# 或者使用
gunzip my_log.txt.gz
常用参数说明:
-c:将压缩结果输出到标准输出,保留原始文件不改变。-d:解压缩操作。-f:强制覆盖已存在的文件。-r:递归处理目录下的所有文件(仅压缩目录内的文件,目录本身不压缩)。-t:检验压缩包的完整性。-v:显示压缩或解压的详细过程信息。-1到-9:设定压缩比率,1最快但压缩率最低,9最慢但压缩率最高,默认级别为6。
bzip2 压缩工具
bzip2 采用比 gzip 更高级的算法,以牺牲执行速度为代价换取更高的压缩比。生成的文件后缀通常为 .bz2。其基本参数与 gzip 基本保持一致,但需要注意 bzip2 不支持 -r 递归选项。
xz 压缩工具
xz 提供了极高的压缩比,相比 .gz 格式体积可缩小约30%,比 .bz2 格式也能缩小约15%。同样地,它也仅支持单一文件的压缩,不支持目录。
zip 归档与压缩工具
不同于上述三种单纯的无损压缩算法,zip 同时具备归档和压缩能力。在 Linux 环境中,它主要用于与 Windows 系统进行跨平台文件交换。
# 将目标文件或目录打包并压缩为 .zip 格式
zip -r project_backup.zip /home/user/project
# 解压 .zip 文件,也可指定仅释放包内特定文件
unzip project_backup.zip config.ini
常用参数说明:
-d:从现有压缩包中移除指定文件。-q:静默模式,隐藏执行过程。-r:递归处理,将指定目录及其子目录下所有内容一并打包。-u:仅更新压缩包中较旧的文件或添加新文件。-v:显示详细执行过程或版本信息。-1到-9:调节压缩速度与压缩率,1最快,9最优。
tar 打包与联合压缩
gzip、bzip2 和 xz 仅能对单个文件进行压缩,无法直接处理目录。而 tar 是一个纯粹的归档(打包)工具,它的作用是将多个文件或整个目录合并为一个单一的大文件。由于归档过程中会附加文件元数据,归档后的文件体积往往略大于原始数据总体积。因此,在 Linux 中压缩目录的标准做法是先用 tar 将目录打包,再调用压缩工具进行压缩。
# 基础语法
tar [操作模式] [选项] 目标文件
核心操作模式:
-c:创建新的归档文件。-x:从归档文件中提取还原。-t:列出归档文件中的内容清单。-r:向已有归档文件追加新内容。-u:仅更新归档包中发生过变动的文件。-A:合并多个 tar 归档文件。-d:对比归档文件与磁盘上文件的差异。--delete:从归档中剔除指定文件。
常用辅助选项:
-v:显示处理详情,双v(-vv)可展示权限、属主、体积等详细属性。-k:解包时避免覆盖已存在的同名文件。-f:指定归档文件的名称,后接文件名参数。-P:保留文件的绝对路径。-z:底层调用gzip进行压缩或解压。-j:底层调用bzip2进行压缩或解压。-J:底层调用xz进行压缩或解压。
典型解压命令组合:
# 解开 .tar.gz 格式
tar -zxvf archive.tar.gz
# 解开 .tar.bz2 格式
tar -jxvf archive.tar.bz2
# 解开 .tar.xz 格式(需分两步或直接使用 tar -Jxvf)
xz -d archive.tar.xz
tar -xvf archive.tar