HOWTO · Linux
如何在 Linux 中解压 .gz 文件
了解如何使用 gunzip、gzip -d 和 tar 在 Linux 中解压 .gz 文件或提取 .tar.gz 存档,并选择是否保留压缩的原始文件。
本页内容
要在 Linux 中解压独立的 .gz 文件,请使用 gunzip filename.gz 或 gzip -d filename.gz。要解包 .tar.gz 存档,请使用 tar -xzf filename.tar.gz。默认情况下,解压会删除压缩的输入文件;如果要保留它,请添加 -k。
了解 .gz 和 .tar.gz 文件
.gz 文件是使用 gzip 压缩的单个文件;该扩展名并不表示它包含一组文件。.tar.gz 文件是先打包成 tar 存档、再用 gzip 压缩的文件,因此它可以包含多个文件和目录。对于独立的 .gz 文件,使用 gunzip 或 gzip -d;要提取 .tar.gz 存档,则使用 tar。
使用 gunzip 解压 .gz 文件
运行 gunzip report.txt.gz 可在当前目录中解压该文件。解压成功后,结果为 report.txt,而 report.txt.gz 将被删除。要保留压缩副本,请添加 -k,例如 gunzip -k report.txt.gz。
这个自包含的示例会创建一个示例文件,将其压缩,在保留压缩副本的同时将其解压,并打印恢复后的内容:
tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
cd "$tmpdir"
printf 'Linux notes\n' > notes
gzip notes
gunzip -k notes.gz
cat notes
Linux notes
使用 gzip -d 解压 .gz 文件
-d 选项指示 gzip 进行解压,因此 gzip -d report.txt.gz 执行与 gunzip report.txt.gz 相同的基本任务。它会将 report.txt 写到输入文件旁边,并且在解压成功后通常会删除 report.txt.gz。使用 gzip -dk report.txt.gz 可保留两个文件。根据哪个名称更容易记住来选择任一命令;两者都处理单个 gzip 压缩文件。
使用 tar 提取 .tar.gz 存档
使用 tar -xzf project.tar.gz 提取用 gzip 压缩的存档。这些选项的含义是:-x 表示提取,-z 处理 gzip 压缩,-f 指定存档文件。默认情况下,tar 会将存档中的路径写到当前工作目录下,因此请在希望创建这些路径的目录中运行该命令。要选择其他目标位置,请添加 -C /path/to/destination,例如 tar -xzf project.tar.gz -C /tmp/project。
.tar.gz 存档和独立的 .gz 文件需要不同的命令:tar 读取存档层并恢复其中的成员文件,而 gunzip 将一个 gzip 数据流解压为一个文件。所示命令不会列出提取的路径;如果希望 tar 在提取时打印成员名称,请使用其详细选项 -v。
使用 gzip 压缩文件
要压缩文件,请运行 gzip report.txt。这会创建 report.txt.gz,并通常删除原始的 report.txt。添加 -k,例如 gzip -k report.txt,可同时保留源文件和压缩文件。Gzip 会分别压缩每个指定的文件;当你需要将多个路径打包到一个存档中时,请先使用 tar,然后压缩该存档以创建 .tar.gz 文件。