当前位置: 首页 > article >正文

Linux 基础命令-压缩与解压缩

1. tar 命令

tar 是 Linux 中用于打包多个文件或目录的命令,尽管 tar 本身不压缩文件,但它可以与 gzipbzip2xz 等压缩工具结合使用。tar 常用于将多个文件或目录打包成一个单独的文件,称为 tarball,通常以 .tar 结尾。

1.1 tar 常用选项
  • -c:创建一个新的归档文件(create)。
  • -x:从归档文件中提取文件(extract)。
  • -v:显示处理过程中的详细信息(verbose)。
  • -f:指定归档文件名(file)。
  • -z:使用 gzip 进行压缩或解压缩。
  • -j:使用 bzip2 进行压缩或解压缩。
  • -J:使用 xz 进行压缩或解压缩。
  • -C:切换到指定的目录进行文件提取。
1.2 打包与压缩

将多个文件或目录打包成一个 .tar 文件,并使用 gzip 压缩成 .tar.gz

tar -czvf archive.tar.gz file1 file2 directory/
  • -c:创建一个新的归档文件。
  • -z:使用 gzip 进行压缩。
  • -v:显示详细信息。
  • -f:指定输出文件名。

例如,压缩目录 documentsdocuments.tar.gz

tar -czvf documents.tar.gz documents/
1.3 解压缩与解包

.tar.gz 文件中解压缩并提取文件:

tar -xzvf archive.tar.gz
  • -x:提取文件。
  • -z:使用 gzip 解压缩。
  • -v:显示详细信息。
  • -f:指定归档文件名。

解压到指定目录:

tar -xzvf archive.tar.gz -C /path/to/extract/
1.4 只打包不压缩

如果不需要压缩,只需要将多个文件或目录打包为 .tar 文件,可以这样操作:

tar -cvf archive.tar file1 file2 directory/

2. gzip 命令

gzip 是 Linux 系统中最常用的压缩工具之一,通常与 tar 结合使用。gzip 只能压缩单个文件,如果想压缩多个文件,通常需要先使用 tar 进行打包,再使用 gzip 进行压缩。

2.1 压缩文件

使用 gzip 命令直接压缩文件:

gzip file.txt

压缩后会生成 file.txt.gz 文件,并删除原始文件。

2.2 解压缩文件

使用 gzip 解压缩 .gz 文件:

gzip -d file.txt.gz

或者使用 gunzip 命令来解压:

gunzip file.txt.gz
2.3 保留原文件

默认情况下,gzip 压缩文件后会删除原始文件。如果希望保留原文件,可以使用 -k 选项:

gzip -k file.txt

3. bzip2 命令

bzip2 是另一个常见的压缩工具,它的压缩比通常高于 gzip,但压缩速度相对较慢。与 gzip 类似,bzip2 也只能压缩单个文件,多个文件需要先打包再压缩。

3.1 压缩文件

使用 bzip2 压缩文件:

bzip2 file.txt

压缩后文件名会变成 file.txt.bz2

3.2 解压缩文件

使用 bzip2 解压缩 .bz2 文件:

bzip2 -d file.txt.bz2

或者使用 bunzip2 命令来解压:

bunzip2 file.txt.bz2
3.3 与 tar 结合使用

可以使用 tar 结合 bzip2 压缩文件:

tar -cjvf archive.tar.bz2 file1 file2 directory/

解压 .tar.bz2 文件:

tar -xjvf archive.tar.bz2

4. xz 命令

xz 是一种高效的压缩工具,通常用于需要高压缩比的场景。与 gzipbzip2 一样,xz 也只能压缩单个文件。

4.1 压缩文件

使用 xz 压缩文件:

xz file.txt

压缩后文件名变为 file.txt.xz

4.2 解压缩文件

使用 xz 解压缩 .xz 文件:

xz -d file.txt.xz

或者使用 unxz 命令来解压:

unxz file.txt.xz
4.3 与 tar 结合使用

gzipbzip2 类似,xz 也可以与 tar 结合使用进行打包和压缩:

tar -cJvf archive.tar.xz file1 file2 directory/

解压 .tar.xz 文件:

tar -xJvf archive.tar.xz

5. zipunzip 命令

zip 是广泛使用的压缩工具之一,特别是在跨平台(Windows 和 Linux)环境下使用时非常常见。zip 可以同时压缩多个文件和目录,并且与 gzipbzip2 不同,它不需要先打包再压缩。

5.1 压缩文件

使用 zip 压缩多个文件或目录:

zip archive.zip file1 file2 directory/

该命令会生成一个 archive.zip 文件,包含指定的文件和目录。

5.2 解压缩文件

使用 unzip 解压缩 .zip 文件:

unzip archive.zip

解压到指定目录:

unzip archive.zip -d /path/to/extract/
5.3 查看 .zip 文件内容

可以使用 unzip -l 查看 .zip 文件中的内容而不解压:

unzip -l archive.zip
5.4 更新压缩文件

可以使用 -u 选项更新 zip 文件中的内容:

zip -u archive.zip file3

此命令会将 file3 添加到现有的 archive.zip 文件中,或者如果 file3 已存在,则会更新它。

6. 压缩工具的比较

Linux 提供了多种压缩工具,每种工具在压缩速度、压缩率和兼容性方面各有优势。以下是常见工具的比较:

工具压缩率压缩速度常用扩展名特点
gzip中等.gz速度快,广泛使用
bzip2中等.bz2压缩率高,但速度较慢
xz很高.xz压缩率最高,适合大文件压缩
zip.zip跨平台使用最广泛

7. 实际应用示例

7.1 备份目录

假设你想备份 /home/user/documents 目录,并保存为 backup.tar.gz 文件:

tar -czvf backup.tar.gz /home/user/documents

这个命令将会打包并压缩整个 documents 目录为 backup.tar.gz

7.2 解压下载的 .tar.gz 文件

假设你从网上下载了一个软件包 software.tar.gz,你可以使用以下命令解压到当前目录:

tar -xzvf software.tar.gz

如果想解压到 /opt/software 目录:

tar -xzvf software.tar.gz -C /opt/software
7.3 使用 zip 压缩并排除文件

假设你想压缩目录 project,但不想包含 project/logs 子目录:

zip -r project.zip project -x "project/logs/*"

该命令会递归压缩 project 目录,但会排除 logs 子目录。

8. 结论

在 Linux 操作系统中,压缩与解压缩文件是日常操作中非常常见的任务。通过压缩,可以减少文件的大小,便于文件的传输与存储;而解压缩则是对压缩文件的还原操作。在 Linux 中,有多种工具用于压缩与解压缩文件,常用的有 gzipbzip2xzzip 等。此外,tar 命令也广泛用于打包多个文件和目录,并常常与压缩工具结合使用。


http://www.kler.cn/a/301535.html

相关文章:

  • 使用YOLOv9进行图像与视频检测
  • FPGA开发-逻辑分析仪的应用-数字频率计的设计
  • reactflow 中 selectionMode 组件作用
  • 嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)
  • 使用视频提升应用在 App Store 中的推广效果
  • Vue3 模板语法
  • 基于SpringBoot+Vue+MySQL的滑雪场管理系统
  • 社群空间站9.9付费入群系统易支付版全套搭建教程
  • 掌握 Ansible:高效自动化运维的完整教程
  • 【4.2】图搜索算法-DFS和BFS解单词拆分
  • Mysql事件操作
  • 计算机网络练级第二级————网络套接字1
  • 嵌入式初学-C语言-数据结构--四
  • ​​​​​​​Oracle11 分析函数等高级函数使用说明
  • 智能会计定义
  • Peewee+Postgresql+PooledPostgresqlDatabase重连机制
  • 掌握 Linux 命令的艺术:深入解析与实用指南
  • 7. MyBatis中的SqlSession是什么?如何管理SqlSession的生命周期?
  • uniapp写移动端常见问题汇总
  • 反序列化漏洞练习2
  • python 实现判断IP4地址是否有效算法
  • MongoDB延迟查询
  • chapter14-集合——(List-Map)——day18
  • ctfshow-文件包含
  • JavaEE:多线程进阶(线程安全的集合类)
  • Python实现Paillier同态加密算法