shell 打包命令是 Linux 和 Unix 系统中常用的文件管理工具,主要用于将多个文件或目录合并成一个单独的文件,便于传输、存储或备份,常见的打包命令包括 tar
、zip
、gzip
、bzip2
、xz
等,每种命令都有其特点和适用场景,下面将详细介绍这些命令的使用方法、参数选项及实际应用案例。

tar 命令
tar
是最常用的打包工具,最初用于将文件写入磁带(tape archive),现在广泛用于文件打包和解包。tar
本身只负责打包,不压缩,但可以结合 gzip
(.gz)、bzip2
(.bz2)、xz
(.xz)等压缩工具实现压缩打包。
基本语法
tar [选项] [文件或目录]
常用选项
选项 | 说明 |
---|---|
-c |
创建新的归档文件 |
-x |
解开归档文件 |
-v |
显示详细过程 |
-f |
指定归档文件名 |
-z |
使用 gzip 压缩/解压 |
-j |
使用 bzip2 压缩/解压 |
-J |
使用 xz 压缩/解压 |
-t |
列出归档文件内容 |
实例
-
打包文件(不压缩)
将dir1
和file1.txt
打包为archive.tar
:tar -cvf archive.tar dir1 file1.txt
-
打包并压缩为 .gz 格式
使用gzip
压缩:tar -czvf archive.tar.gz dir1 file1.txt
-
解压 .tar.gz 文件
(图片来源网络,侵删)tar -xzvf archive.tar.gz
-
查看归档文件内容
tar -tzvf archive.tar.gz
zip 和 unzip 命令
zip
是跨平台的压缩工具,生成的文件在 Windows 和 Linux 系统中均可使用,适合需要跨系统传输的场景。
基本语法
zip [选项] 压缩文件名 文件或目录 unzip [选项] 压缩文件名
常用选项
选项 | 说明 |
---|---|
-r |
递归处理目录 |
-q |
静默模式,不显示过程 |
-d |
解压到指定目录 |
实例
-
压缩目录为 .zip 文件
zip -r archive.zip dir1
-
解压 .zip 文件
(图片来源网络,侵删)unzip archive.zip
-
解压到指定目录
unzip archive.zip -d /path/to/destination
gzip 命令
gzip
是常用的压缩工具,只能压缩单个文件,不能直接压缩目录,通常与 tar
结合使用。
基本语法
gzip [选项] 文件
常用选项
选项 | 说明 |
---|---|
-d |
解压文件 |
-k |
保留原始文件 |
-r |
递归压缩目录中的文件 |
实例
-
压缩文件
gzip file.txt
压缩后生成
file.txt.gz
,原始文件被删除。 -
解压文件并保留原始文件
gzip -dk file.txt.gz
bzip2 压缩命令
bzip2
是比 gzip
压缩率更高的工具,但速度较慢,适合对压缩率要求高的场景。
基本语法
bzip2 [选项] 文件
常用选项
选项 | 说明 |
---|---|
-d |
解压文件 |
-k |
保留原始文件 |
-v |
显示压缩比 |
实例
-
压缩文件
bzip2 file.txt
生成
file.txt.bz2
。 -
解压文件
bzip2 -d file.txt.bz2
xz 压缩命令
xz
是目前压缩率最高的工具之一,但压缩和解压速度较慢,适合需要极致压缩的场景(如备份文件)。
基本语法
xz [选项] 文件
常用选项
选项 | 说明 |
---|---|
-d |
解压文件 |
-k |
保留原始文件 |
-v |
显示详细信息 |
实例
-
压缩文件
xz file.txt
生成
file.txt.xz
。 -
解压文件
xz -d file.txt.xz
其他实用技巧
-
打包时排除特定文件
使用--exclude
选项排除文件:tar -czvf archive.tar.gz --exclude="*.tmp" dir1
-
分卷压缩
使用split
命令将大文件分割为小部分:tar -czvf - large_file.tar.gz | split -b 10M - part_
解压时合并:
cat part_* > large_file.tar.gz
相关问答 FAQs
问题 1:tar 和 zip 有什么区别?如何选择?
解答:tar
主要用于 Linux/Unix 系统的打包,可结合 gzip、bzip2 等工具压缩,适合保留文件权限和目录结构;zip
是跨平台工具,生成的文件在 Windows 和 Linux 中均可使用,但压缩率通常低于 tar
+ gzip
,若需跨系统传输,选 zip
;若在 Linux 环境下追求高效和权限保留,选 tar
。
问题 2:如何查看压缩包中的文件列表而不解压?
解答:使用 tar
的 -t
选项可列出 .tar
、.tar.gz
、.tar.bz2
等文件内容,
tar -tzvf archive.tar.gz
对于 .zip
文件,使用:
unzip -l archive.zip
对于 .gz
或 .bz2
单文件,需先解压或使用 zcat
/bzcat
查看:
zcat file.txt.gz