菜鸟科技网

Linux打包命令有哪些?如何正确使用?

打包 vs. 压缩

在学习命令之前,必须先理解两个概念:

Linux打包命令有哪些?如何正确使用?-图1
(图片来源网络,侵删)
  1. 打包:将多个文件或目录合并成一个单一的文件,这个过程不减少文件大小,只是将它们组织在一起,常见的打包工具有 tar, cpio
  2. 压缩:使用特定的算法(如 gzip, bzip2, xz)来减小文件的大小,压缩通常针对的是一个单一文件

在实际使用中,我们通常将这两个步骤合二为一:先打包,再压缩


最核心的命令:tar

tar (Tape Archiver) 是 Linux 下最强大、最常用的归档工具,它本身只负责打包,但可以调用其他压缩程序(如 gzip, bzip2, xz)来完成压缩。

基本语法

tar [选项] [归档文件名] [要打包的文件或目录]

常用选项

选项 长选项 描述
-c --create 创建一个新的归档文件(打包)。
-x --extract 解包一个归档文件。
-t --list 列出归档文件中的内容,不解包。
-f --file=ARCHIVE 指定归档文件的文件名,此选项通常是最后一个,后面紧跟文件名。
-v --verbose 显示详细的处理过程(正在打包/解包哪些文件)。
-z --gzip 调用 gzip 程序进行压缩/解压,文件后缀通常为 .tar.gz.tgz
-j --bzip2 调用 bzip2 程序进行压缩/解压,压缩率比 gzip 高,但速度慢,文件后缀通常为 .tar.bz2
-J --xz 调用 xz 程序进行压缩/解压,压缩率最高,但速度最慢,文件后缀通常为 .tar.xz
-C --directory=DIR 解包时,将文件解压到指定的目录 DIR

tar 命令详解(最常用场景)

场景1:打包并使用 gzip 压缩(最常用)

这是最常见的用法,用于创建一个 .tar.gz 文件。

命令:

Linux打包命令有哪些?如何正确使用?-图2
(图片来源网络,侵删)
# 将 my_project 目录打包并压缩为 my_project.tar.gz
tar -czvf my_project.tar.gz my_project/
# 解释:
# -c: 创建归档
# -z: 使用 gzip 压缩
# -v: 显示过程
# -f: 指定文件名为 my_project.tar.gz
# my_project/: 要打包的目录

场景2:解压 .tar.gz 文件

命令:

# 解压 my_project.tar.gz 到当前目录
tar -xzvf my_project.tar.gz
# 解释:
# -x: 解包
# -z: 使用 gzip 解压
# -v: 显示过程
# -f: 指定要解压的文件
# 解压到指定目录 /tmp
tar -xzvf my_project.tar.gz -C /tmp

场景3:打包并使用 bzip2 压缩

当需要更高的压缩率时使用。

命令:

# 将 my_project 目录打包并压缩为 my_project.tar.bz2
tar -cjvf my_project.tar.bz2 my_project/
# 解压 my_project.tar.bz2
tar -xjvf my_project.tar.bz2

场景4:打包并使用 xz 压缩

当追求极致的压缩率时使用(用于长期归档或网络传输)。

Linux打包命令有哪些?如何正确使用?-图3
(图片来源网络,侵删)

命令:

# 将 my_project 目录打包并压缩为 my_project.tar.xz
tar -cJvf my_project.tar.xz my_project/
# 解压 my_project.tar.xz
tar -xJvf my_project.tar.xz

场景5:只查看归档文件内容,不解压

命令:

# 查看 my_project.tar.gz 的内容
tar -tzvf my_project.tar.gz

场景6:向已存在的归档文件中添加新文件

命令:

# 将 new_file.txt 添加到 my_project.tar.gz 中
tar -rvf my_project.tar.gz new_file.txt
# 注意:my_project.tar.gz 是压缩过的(如 .gz),此命令会破坏压缩包。
# 正确做法是先解压,添加文件,再重新压缩。

其他打包/压缩命令

除了 tar,还有一些其他工具,它们的使用场景和 tar 不同。

zipunzip

zip 是跨平台最常用的压缩格式,在 Windows 和 Linux 上都通用,它将每个文件单独压缩,然后打包。

  • 特点:跨平台兼容性好。
  • 缺点:对于大量小文件,压缩率通常不如 tar.gz

命令:

# 安装 (如果系统没有)
# Debian/Ubuntu: sudo apt-get install zip unzip
# CentOS/RHEL: sudo yum install zip unzip
# 压缩
zip -r my_project.zip my_project/
# -r: 递归压缩目录
# 解压
unzip my_project.zip
unzip -l my_project.zip

gzip / gunzip

gzip 是一个单纯的压缩工具,它只能压缩单个文件,不能打包多个文件。

命令:

# 压缩一个文件,生成 file.gz,原 file 文件会被删除
gzip large_file.log
# 解压,生成 large_file.log,原 file.gz 文件会被删除
gunzip large_file.gz
# 解压并保留原文件
gzip -d large_file.gz
# 压缩并保留原文件
gzip -c large_file.log > large_file.gz

bzip2 / bunzip2

gzip 类似,也是一个单纯的压缩工具,但压缩率更高,速度更慢。

命令:

# 压缩
bzip2 large_file.log
# 解压
bunzip2 large_file.bz2

xz / unxz

gzipbzip2 类似,是目前压缩率最高的工具之一,速度最慢。

命令:

# 压缩
xz large_file.log
# 解压
unxz large_file.xz

快速选择指南

你的需求 推荐命令 文件后缀 说明
日常 Linux 环境下备份/归档 tar -czvf ... .tar.gz 最常用,速度快,兼容性好。
需要更高的压缩率 tar -cjvf ... .tar.bz2 压缩率比 gzip 高,但慢。
追求极致压缩率 tar -cJvf ... .tar.xz 压缩率最高,速度最慢。
需要与 Windows 用户共享 zip -r ... .zip 跨平台,Windows 上无需额外软件即可解压。
只压缩一个单一的大文件 gzip ... / xz ... .gz / .xz tar 压缩单个文件更直接。
工具 类型 功能 典型用法
tar 打包+压缩 打包多个文件/目录,并调用外部压缩程序 tar -czvf archive.tar.gz dir/
zip 打包+压缩 跨平台,将多个文件/目录打包成 .zip 格式 zip -r archive.zip dir/
gzip 压缩 单文件压缩,速度快 gzip file
bzip2 压缩 单文件压缩,压缩率高 bzip2 file
xz 压缩 单文件压缩,压缩率最高 xz file

掌握 tar 命令就足以应对绝大多数 Linux 下的打包和压缩场景。-czvf (打包压缩) 和 -xzvf (解压) 这两个组合,再结合 -C 指定解压目录,就能解决大部分问题。

分享:
扫描分享到社交APP
上一篇
下一篇