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 上使用最为广泛。
| Format | Features | Main use |
|---|---|---|
| zip | High Windows compatibility | Sharing with other OSes |
| tar.gz | Linux standard format | General-purpose compression |
| tar.bz2 | Higher compression than gzip | Prioritize smaller size |
| tar.xz | Very high compression | Large 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 上,你使用 zip 和 unzip 命令。
首先检查它们是否已安装。
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 是一个两步过程:
- 使用 tar 捆绑文件(归档)
- 使用 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 通过右键压缩的步骤
步骤
- 选择要压缩的文件或文件夹
- 右键点击
- 选择 “Compress”(压缩)
选择一种格式 wp:list /wp:list
- .zip
- .tar.xz
- .7z(可能根据环境出现) 5. 点击 “Create”(创建)
压缩文件会在同一目录下创建。
5.2 如何提取
步骤
- 右键点击压缩文件
- 选择 “Extract Here”(提取到此处)或 “Extract To…”(提取到…)
- 提取完成
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 case | Recommended format | Reason |
|---|---|---|
| Sharing with Windows | zip | High compatibility |
| Standard use within Linux | tar.gz | Good balance |
| Size is the top priority | tar.xz | High compression |
| Backup storage | tar.gz / tar.xz | Prioritize stability |
| Temporary transfer | tar.gz | Prioritize speed |
8.2 格式对比(速度 vs 压缩率)
| Format | Compression ratio | Speed | CPU load |
|---|---|---|---|
| zip | Normal | Fast | Low |
| tar.gz | Normal | Fast | Low to medium |
| tar.bz2 | High | Slow | Medium |
| tar.xz | Very high | Very slow | High |
注意:压缩率和速度会因数据类型及运行环境而异。
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 -czvf 和 tar -xzvf 两条命令。
8.5 常见的错误选择
- 误以为单独的 tar 就能压缩
- 总是选择 xz,导致处理速度变慢
- 没弄清楚 GUI 与 CLI 的区别
- 压缩前不检查磁盘使用情况

