压缩与解压
更新时间:
本节为您介绍 Linux 系统中如何压缩和解压文件。
# 概述
常见压缩文件在 Linux 操作系统中的解压方法如下所示。
文件格式 | 解压工具 | 快速解压参考 |
---|---|---|
.tar | tar | tar -xvf filename.tar |
.gz | gzip | gunzip -v filename.gz |
.tar.gz | tar | tar -zxvf filename.tar.gz |
.zip | zip | unzip archive.zip |
.7z | 7z | 7z x archive.7z |
.bz2 | bzip2 | bunzip2 -k archive.bz2 |
.tar.bz2 | tar | tar -jxvf filename.tar.bz2 |
# tar
tar 命令是 Linux 下常用的打包和压缩工具,支持压缩/解压缩 tar、tar.gz、tar.bz2 格式文件。tar 命令使用:
tar [选项] [文件名] [文件列表]
选项(简) | 含义 |
---|---|
-c | 创建一个 tar 包。可以和 -f 参数一起使用,指定生成的 tar 包的文件名。 |
-x | 解压一个 tar 包。可以和 -f 参数一起使用,指定要解压缩的 tar 包的文件名。 |
-r | 将一个或多个文件追加到已存在的 tar 包的末尾。可以和 -f 参数一起使用,指定要追加到的 tar 包的文件名。 |
-u | 仅将新于 tar 包中已有的文件或目录添加到 tar 包中。可以和 -f 参数一起使用,指定要更新的 tar 包的文件名。 |
-t | 列出一个 tar 包中包含的所有文件。可以和 -f 参数一起使用,指定要查询的 tar 包的文件名。 |
-f | 指定要操作的 tar 包的文件名。 |
-v | 在操作的过程中显示详细信息。 |
-z | 在 tar 包中使用 gzip 压缩。 |
-j | 在 tar 包中使用 bzip2 压缩。 |
-C | 指定解压缩到的目录。 |
压缩示例
#将多个文件或目录压缩为一个 tar 包。file1、file2、dir1 为要压缩的文件和目录,filename.tar 为压缩后的包名。
tar -cvf filename.tar file1 file2 dir1
#将目录及其子目录下的所有文件压缩为一个 tar.gz 包。-z 表示使用 gzip 压缩。
tar -czf filename.tar.gz dir1
#将目录及其子目录下的所有文件压缩为一个 tar.bz2 包。-j 表示使用 bzip2 压缩。
tar -cjf filename.tar.bz2 dir1
解压示例
#将一个 tar 包解压缩到指定目录下,filename.tar 为要解压的包,/path/to/directory 为解压到的目录。
tar -xvf filename.tar -C /path/to/directory
#将一个 tar.gz 包解压缩到指定目录下。-z 表示使用 gzip 解压缩。
tar -zxvf filename.tar.gz -C /path/to/directory
#将一个 tar.bz2 包解压缩到指定目录下。-j 表示使用 bzip2 解压缩。
tar -jxvf filename.tar.bz2 -C /path/to/directory
# gzip
gzip 和 gunzip 是在 Linux 中用于压缩和解压缩文件的工具。gzip 使用 DEFLATE 压缩算法,而 gunzip 则用于解压缩经 gzip 压缩过的文件。gzip 命令使用:
gzip [选项] [文件]
选项 | 含义 |
---|---|
-c | 标准输出并保留源文件,即指定输出的路径及文件名。 |
-d | 执行解压缩。 |
-f | 强制覆盖输出文件和压缩链接。 |
-l | 查看每个压缩文件的详细信息,包含:压缩文件大小、原文件大小、压缩比、原文件名称。 |
-r | 递归查询指定目录,并压缩/解压其中的所有文件。 |
-t | 测试,检查压缩文件是否完整。 |
-v | 显示压缩/解压缩过程信息。 |
压缩
#filename 压缩为 filename.gz,并删除原始文件。-v 显示详细压缩信息,包括压缩比和进度。
gzip -v filename
#filename 压缩为 filename.gz,并保留原始文件。
gzip -c filename > filename.gz
解压
#解压缩 filename.gz 并删除该文件。-v 显示详细解压缩信息,包括解压缩比和进度。
gunzip -v filename.gz
#解压 filename.gz 文件,同时保留该压缩文件。
gunzip -c filename.gz > filename
# zip
zip 和 unzip 是用于在 Linux 系统中创建和解压缩 ZIP 文件的命令行工具。如下为 zip 命令使用说明,您也可通过 man zip
和 man unzip
命令查看它们的详细帮助。
zip [选项] [压缩文件] [文件]
选项 | 含义 |
---|---|
-m | 文件压缩后,删除源文件。 |
-o | 将压缩文件设置为和源文件一样的时间。 |
-q | 安静模式,压缩时不显示命令执行过程。 |
-r | 将指定目录下的所有子目录及文件一起处理。 |
-n <特定字符串> | 不压缩特定字符结尾的字符串。 |
-v | 显示详细操作信息。 |
-z | 添加压缩文件注释。 |
-e | 压缩的时候指定加密。 |
-T | 测试压缩文件完整性。 |
-c | 添加一行注释。 |
-u | 更新压缩文件,向压缩文件内添加新文件。 |
-x <文件名> | 压缩时排除指定文件。 |
-i <文件名> | 压缩时只包括指定文件。 |
压缩
#将多个文件压缩为 archive.zip 包。
zip archive.zip file1 file2 file3
#将某个目录压缩为 archive.zip 包。-r 可以递归地将目录及其内容压缩一起压缩。
zip -r archive.zip dir1
#将文件或目录压缩到 archive.zip 文件,同时保留原始文件。
zip -r - files | cat > archive.zip
解压缩
#解压 archive.zip 到当前目录。
unzip archive.zip
#解压 archive.zip 文件到指定目录。-d 选项,指定解压到的目录。
unzip archive.zip -d /path/to/destination
查看压缩包
#列出 archive.zip 文件的内容列表,包括文件名、压缩比等信息。
unzip -l archive.zip
# 7z
7z 是一个用于创建和解压缩文件归档的命令行工具,支持多种压缩算法。如下为 7z 的常用命令,可通过 man 7z
命令查看 7z 命令的详细帮助。
安装 环境中可能未安装 7z 工具,Ubuntu 系统下的安装方式如下所示:
sudo apt-get update
sudo apt-get install -y p7zip-full
压缩
#将多个文件和目录压缩为 archive.7z。默认使用 LZMA 算法进行压缩。
7z a archive.7z file1 file2 dir1
#将多个文件和目录压缩为 archive.7z。-t 指定使用 zip 算法进行压缩。
7z a -tzip archive.zip file1 file2 dir1
解压缩
#解压 archive.7z 到当前目录。
7z x archive.7z
#解压缩到指定目录。-o 指定解压缩到的目录。
7z x archive.7z -o/path/to/destination
查看压缩包
#列出 7z 文件的内容列表,包括文件名、压缩比等信息。
7z l archive.7z
# bzip2
使用 Burrows-Wheeler 块排序文本压缩算法,将文件进行压缩,压缩比率比一般算法高一些。
bzip2 [选项] [文件]
选项 | 含义 |
---|---|
-c | 将压缩与解压缩结果送到标准输出,即指定压缩/解压后输出到的具体路径和文件名。 |
-d | 执行解压缩。 |
-f | 压缩或解压缩时,如果输出文件与现有文件同名,则覆盖现有文件。 |
-k | 压缩或解压缩后,保留原始文件。 |
-s | 降低程序执行时内存的使用量。 |
-t | 测试压缩文件的完整性。 |
-v | 压缩或解压缩时,显示详细信息。 |
-z |
压缩
#压缩单个文件,即将 file1 压缩为 file1.bz2。
bzip2 file1
#压缩多个文件,将分别生成 file1.bz2、file2.bz2、file3.bz2 压缩文件。
bzip2 file1 file2 file3
#压缩单个文件到指定目录
bzip2 -c file1 > /path/to/directory/file1.bz2
解压
#解压 archive.bz2 到当前目录,解压后不保留原压缩文件。
bzip2 -d archive.bz2
#解压到指定目录。-c 指定解压到的目录。
bzip2 -dc archive.bz2 > /path/to/target_directory/archive.txt
← 文件管理 保存Checkpoint →