在 Ubuntu 上压缩和解压文件(zip、tar.gz、tar.xz)——命令、图形界面及故障排除

目次

1. 在 Ubuntu 上压缩与解压的基础知识

在 Ubuntu 上执行“压缩”的主要目的有以下三点:

  • 减小文件体积以节省存储空间
  • 将多个文件打包成一个文件以便发送和共享
  • 创建备份和归档(用于存储的打包集合)

在 Ubuntu 中,命令行(终端)操作是标准方式。你也可以通过 GUI(文件管理器)完成,但在实际工作和服务器环境中,命令行使用才是常态。

你首先需要了解的关键点是:“压缩”和“归档”是不同的概念。

1.1 压缩与归档的区别

这是大多数初学者感到困惑的地方。

  • 压缩 → 通过处理减小数据体积 示例:gzip、bzip2、xz
  • 归档 → 将多个文件和文件夹打包成单个文件的处理 示例:tar

一个重要事实

tar 命令并不是“压缩”。
严格来说,它是一个“仅打包”的命令。

如果想要同时压缩,需要将其与 gzip 或 xz 结合使用。

示例:

tar -czvf archive.tar.gz folder/

含义:

  • c = 创建
  • z = gzip 压缩
  • v = 详细输出(显示处理的项目)
  • f = 指定输出文件名

1.2 Ubuntu 上常见的压缩格式

以下格式在 Ubuntu 上使用最为广泛。

FormatFeaturesMain use
zipHigh Windows compatibilitySharing with other OSes
tar.gzLinux standard formatGeneral-purpose compression
tar.bz2Higher compression than gzipPrioritize smaller size
tar.xzVery high compressionLarge datasets

如何选择

  • 与 Windows 共享 → zip
  • 仅在 Linux 内部使用 → tar.gz
  • 体积最重要 → tar.xz

1.3 压缩前的基本检查命令

检查当前目录:

pwd

列出文件:

ls -l

检查大小:

du -sh folder/

常见的绊脚点

  • 未检查当前目录就直接运行命令,导致文件生成在意外位置
  • 相对路径写错(例如 ../folder
  • 压缩前未进行大小检查,导致磁盘空间耗尽

1.4 常见误解与注意事项

1. 图像和视频几乎不再压缩

因为 JPEG 和 MP4 本身已经是压缩格式,它们的体积通常不会明显缩小。

2. 单独使用 tar 并不减小体积

下面的命令仅“打包”。

tar -cvf archive.tar folder/

体积几乎保持不变。

3. 大文件会增加 CPU 负载

CPU 使用率可能会升高,尤其是使用 xz 时。

4. 注意权限错误

如果操作系统目录,需要使用 sudo

2. 在 Ubuntu 上使用 zip 格式进行压缩与解压

在 Ubuntu 与 Windows 之间交换文件时,zip 格式提供了最好的兼容性。
许多搜索“ubuntu compression”的用户首先想到的就是 zip。

在 Ubuntu 上,你使用 zipunzip 命令。
首先检查它们是否已安装。

2.1 检查是否已安装 zip

可以使用以下命令进行检查:

zip -v

如果出现错误,说明未安装,使用以下命令进行安装:

sudo apt update
sudo apt install zip unzip

常见错误

  • 因未安装 unzip 而无法解压
  • 忘记加 sudo,导致出现 “Permission denied”

2.2 使用 zip 压缩文件

压缩单个文件:

zip sample.zip file.txt

结果:

  • 生成 sample.zip
  • 原文件不会被删除

同时压缩多个文件

zip sample.zip file1.txt file2.txt

2.3 压缩文件夹(重要)

压缩文件夹时,需要使用 -r 选项(递归)。

zip -r sample.zip folder/

如果省略 -r,文件夹内部的文件将不会被压缩。

常见绊脚点

  • 忘记 -r
  • 相对路径写错
  • 命令顺序写错(输出文件名应放在前面)

正确顺序:

zip -r output.zip target_folder

2.4 解压 zip 文件

基本命令:

unzip sample.zip

解压到指定文件夹:

unzip sample.zip -d extracted_folder

说明

  • 如果目标已存在,将提示确认覆盖
  • 如果存在同名文件,它们可能会被覆盖
  • 如果路径包含空格,请用引号包围

示例:

unzip "sample file.zip"

2.5 创建受密码保护的 zip

您可以为安全起见对其加密。

zip -e secure.zip file.txt

系统将提示您输入密码。

说明

  • zip 加密不是很强(不适合高安全性使用)
  • 丢失密码 = 难以恢复

2.6 检查大小和压缩比率

显示 zip 文件信息:

unzip -l sample.zip

与原始大小比较:

ls -lh

为什么压缩比率可能较低

  • 图像/视频已经压缩
  • 文本和日志通常压缩良好

3. 如何使用 tar.gz (tgz) 进行压缩(Linux 标准)

Linux 环境中最常用的格式是 tar.gz
它广泛用于 Ubuntu 的源代码分发和备份。

tar.gz 是一个两步过程:

  1. 使用 tar 捆绑文件(归档)
  2. 使用 gzip 压缩

理解此机制将使高级用法更容易。

3.1 创建 tar.gz 归档的基本命令

示例:压缩一个文件夹

tar -czvf archive.tar.gz folder/

每个选项的含义:

  • c = 创建
  • z = gzip 压缩
  • v = 详细(显示处理的项目)
  • f = 文件(指定输出文件名)

单个文件

tar -czvf archive.tar.gz file.txt

多个文件

tar -czvf archive.tar.gz file1.txt file2.txt

3.2 如何解压 tar.gz 归档

基本命令:

tar -xzvf archive.tar.gz

选项分解:

  • x = 解压
  • z = gzip 解压缩
  • v = 显示解压的项目
  • f = 指定文件

解压到特定目录

tar -xzvf archive.tar.gz -C target_folder/

-C 指定目标目录。

3.3 使用 tar 的重要说明

1. 注意解压后的路径结构

创建时的目录结构在解压时会保留。

示例:

tar -czvf archive.tar.gz folder/

解压后:

folder/
  └─ contents

如果您想“仅解压内容”,则需要在创建归档时调整路径。

2. 注意意外覆盖

如果文件已存在,它们可能会被覆盖。
提前检查:

tar -tzvf archive.tar.gz

-t 列出归档内容。

3. 磁盘空间不足

压缩可能会临时使用额外空间。
提前检查:

df -h

3.4 仅使用 gzip 压缩

仅压缩单个文件:

gzip file.txt

结果:

file.txt.gz

解压缩:

gunzip file.txt.gz

说明

  • gzip 会删除原始文件(压缩后替换它)
  • 不适合捆绑多个文件

3.5 常见错误

  • 混淆选项顺序
  • 忘记在 f 后放置文件名
  • -C 放在错误位置
  • 误解 tar 本身会减小大小

4. 选择高压缩格式 (bz2 / xz)

如果您想尽可能减小大小,请使用 bzip2 (bz2)xz,它们通常比 gzip 压缩得更好。
然而,压缩比率越高,CPU 负载越高,处理时间越长。

基本指南如下:

  • 优先速度 → gzip
  • 优先压缩比率 → xz
  • 中间选择 → bzip2

4.1 创建和解压 tar.bz2

如何压缩

tar -cjvf archive.tar.bz2 folder/

选项分解:

  • c = 创建
  • j = bzip2 压缩
  • v = 详细输出
  • f = 指定输出

如何解压

tar -xjvf archive.tar.bz2

4.2 创建和解压 tar.xz

xz 是 Linux 上当前压缩率最高的格式之一。

如何压缩

tar -cJvf archive.tar.xz folder/

注意:J 必须是大写(重要)。

如何提取

tar -xJvf archive.tar.xz

4.3 压缩率和处理时间的差异

一般趋势(因环境而异):

  • gzip → 快速,标准压缩率
  • bzip2 → 比 gzip 更高的压缩率,稍慢
  • xz → 非常高的压缩率,最慢

检查 CPU 负载

top

在使用 xz 压缩大文件时,CPU 使用率上升是正常的。

4.4 实际工作中如何选择

备份

→ tar.xz(优先更小的体积)

服务器日志存储

→ tar.gz(平衡)

临时传输

→ tar.gz 或 zip

4.5 常见错误和注意事项

  • J 键入小写并导致错误
  • 在旧环境中未安装 xz
  • 服务器因 CPU 负载而变慢
  • 压缩过程中空间不足

如果未安装 xz:

sudo apt install xz-utils

5. 使用 GUI(文件管理器)进行压缩

如果您不熟悉命令行操作,可以使用 Ubuntu 的文件管理器(通常是 “Files” = Nautilus)进行压缩。在桌面环境下,这是最简便的方法。

5.1 通过右键压缩的步骤

步骤

  1. 选择要压缩的文件或文件夹
  2. 右键点击
  3. 选择 “Compress”(压缩)
  4. 选择一种格式 wp:list /wp:list

    • .zip
    • .tar.xz
    • .7z(可能根据环境出现) 5. 点击 “Create”(创建)

压缩文件会在同一目录下创建。

5.2 如何提取

步骤

  1. 右键点击压缩文件
  2. 选择 “Extract Here”(提取到此处)或 “Extract To…”(提取到…)
  3. 提取完成

5.3 当无法使用 GUI 时的检查

在最小化安装环境或 Ubuntu Server 上,GUI 不可用。在这种情况下,必须使用命令行操作。

检查桌面环境:

echo $XDG_CURRENT_DESKTOP

如果没有显示任何内容,可能没有 GUI 环境。

5.4 使用 GUI 时的注意事项

1. 处理大量文件时可能很慢

进度指示器可能难以理解。

2. 无法指定详细的压缩级别

在 GUI 中无法设置 gzip 的压缩级别。

3. CPU 使用率难以观察

如果在处理过程中电脑变慢,可能难以了解原因。

4. 不适合服务器使用

在基于 SSH 的环境中不可用。

5.5 常见错误

  • 在不了解差异的情况下选择压缩格式
  • 未检查目标位置,导致“丢失”提取的文件
  • 覆盖已有文件

6. 实际工作中的实用压缩技巧

这里我们解释在实际工作和服务器运维中经常出现的技巧,超出简单的压缩/解压。这包括排除日志、仅压缩特定扩展名以及密码保护的 zip——非常实用的操作。

6.1 仅压缩特定文件扩展名

示例:仅压缩日志文件

tar -czvf logs.tar.gz *.log

注意

  • *(通配符)会被 shell 自动展开
  • 仅针对当前目录下的文件
  • 不包括子文件夹

若要同时包含子文件夹:

find . -name "*.log" -print0 | tar --null -czvf logs.tar.gz --files-from=-

6.2 压缩时排除特定文件

示例:排除 .log 文件

tar --exclude="*.log" -czvf archive.tar.gz folder/

排除多个模式:

tar --exclude="*.log" --exclude="*.tmp" -czvf archive.tar.gz folder/

常见错误

  • 忽略引号导致通配符展开
  • 错误输入排除路径

6.3 指定压缩级别(gzip)

gzip 允许指定压缩级别(1–9)。

gzip -9 file.txt
  • 1 = 快速,压缩率低
  • 9 = 缓慢,压缩率高

使用 tar 指定时:

tar -czvf archive.tar.gz folder/ --gzip -9

注意:语法可能因环境而异。

6.4 创建受密码保护的 zip

zip -e secure.zip file.txt

强制加密:

zip -P password secure.zip file.txt

注意

  • -P 不推荐使用,因为它会保留在 shell 历史中
  • zip 加密并不十分强大(不适用于高安全性场景)

6.5 拆分归档(针对大文件)

拆分大归档:

zip -r -s 100m split.zip folder/

它将被拆分为 100 MB 的部分。

注意事项

  • 提取时需要所有拆分的部分
  • 任意部分缺失或损坏,均无法恢复

6.6 比较压缩前后的大小

压缩前:

du -sh folder/

压缩后:

ls -lh archive.tar.gz

导致压缩率低的常见原因:

  • 已经压缩过的数据,如图片/视频
  • 加密数据的压缩效果很差

7. 压缩过程中常见错误及解决办法

在 Ubuntu 上进行压缩/解压时,初学者常会遇到一些常见错误。
以下列出典型错误及对应的解决方案。

7.1 “command not found” 错误

示例:

zip: command not found

原因

该命令未安装。

解决方案

sudo apt update
sudo apt install zip unzip

针对 tar 相关工具:

sudo apt install xz-utils

7.2 “Permission denied”

示例:

tar: folder/file.txt: Cannot open: Permission denied

原因

访问文件或目录的权限不足。

解决方案

检查所有权:

ls -l

使用 sudo:

sudo tar -czvf archive.tar.gz folder/

注意

过度使用 sudo 会增加安全风险。

7.3 “No space left on device”

示例:

No space left on device

原因

磁盘空间不足。

检查方法

df -h

删除不必要的文件:

sudo apt clean

查看磁盘使用情况:

du -sh *

7.4 解压时文件名乱码

当你收到在 Windows 上创建的 zip 文件时,可能会出现此问题。

原因

字符编码差异(UTF-8 与 Shift-JIS 等)导致。

示例修复方案

unzip -O cp932 sample.zip

注意:具体做法随环境而异。

7.5 意外覆盖

解压过程中可能会覆盖已有文件。

事先检查:

tar -tzvf archive.tar.gz

针对 zip:

unzip -l sample.zip

7.6 CPU 负载过高

在使用 xz 压缩时,CPU 使用率升高是正常现象。

检查方法:

top

如有必要,可降低压缩等级,或改用 gzip。

8. 总结:Ubuntu 压缩命令使用指南(快速参考)

下面提供一个实用的、基于使用场景的汇总,帮助搜索 “ubuntu compression” 的用户快速得出结论。

8.1 按使用场景推荐的格式

Use caseRecommended formatReason
Sharing with WindowszipHigh compatibility
Standard use within Linuxtar.gzGood balance
Size is the top prioritytar.xzHigh compression
Backup storagetar.gz / tar.xzPrioritize stability
Temporary transfertar.gzPrioritize speed

8.2 格式对比(速度 vs 压缩率)

FormatCompression ratioSpeedCPU load
zipNormalFastLow
tar.gzNormalFastLow to medium
tar.bz2HighSlowMedium
tar.xzVery highVery slowHigh

注意:压缩率和速度会因数据类型及运行环境而异。

8.3 必备的最小命令集合

zip 压缩

zip -r archive.zip folder/

tar.gz 压缩

tar -czvf archive.tar.gz folder/

tar.gz 解压

tar -xzvf archive.tar.gz

8.4 给初学者的简明结论

  • 不确定时,使用 tar.gz
  • 需要在 Windows 上共享时,使用 zip
  • 想要尽可能最小的体积,使用 tar.xz

你的首要任务是熟记 tar -czvftar -xzvf 两条命令。

8.5 常见的错误选择

  • 误以为单独的 tar 就能压缩
  • 总是选择 xz,导致处理速度变慢
  • 没弄清楚 GUI 与 CLI 的区别
  • 压缩前不检查磁盘使用情况