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

目次

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

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

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

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

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

1.1 压缩与归档的区别

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

  • Compression → 减少数据大小的处理 示例:gzip、bzip2、xz
  • Archive → 将多个文件和文件夹打包成单个文件的处理 示例: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. 选择“压缩”
  4. 选择一种格式 wp:list /wp:list

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

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

5.2 如何解压

步骤

  1. 右键单击压缩文件
  2. 选择“在此处解压”或“解压到…”
  3. 解压完成

5.3 当无法使用 GUI 时检查

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

检查桌面环境:

echo $XDG_CURRENT_DESKTOP

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

5.4 使用 GUI 时的注意事项

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

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

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

在 GUI 中无法设置 gzip 级别。

3. 难以看到 CPU 使用率

如果处理过程中 PC 变慢,可能难以理解原因。

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/

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

注意事项

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

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 的区别
  • 压缩前未检查磁盘使用情况