Linux系列之压缩命令
前言
Linux 有三个常用的压缩命令:gzip
、bzip2
和 tar
。本文介绍它们的区别和简单用法。
压缩文件
数据压缩是去除数据中冗余部分的过程,需要通过压缩算法完成。这些算法可分为两类:
- 「无损压缩」:保留原始文件中包含的所有数据。
- 「有损压缩」:在进行压缩时删除数据,以便应用更多的压缩。当文件被恢复时,它与原始版本不一致,是一个近似值。JPEG和MP3是有损压缩的例子。
gzip命令
该命令被用来压缩一个或多个文件。它将原始文件替换为压缩版本。
该命令的语法为gzip file
。
image.png
我们可以使用gunzip
来解压缩。
image.png
gzip有诸多选项,使用命令man gzip
查看完整的列表。
如果想要查看压缩的文本文件的内容,可以使用gunzip -c
或者 zcat
进行查看。
image.png
image.png
bzip2命令
该命令与gzip
类似,但使用了不同的压缩算法,并以压缩速度为代价实现更高的压缩水平。
用来压缩的命令:
bzip2 sample.txt
用来解压缩的命令:
bunzip2 sample.txt.bz2
bzip2
也有几个受支持的选项。
归档文件
归档是将许多文件收集起来,并将它们打包在一起成为一个大文件的过程。
tar命令
tar
程序是归档文件中的经典工具。如果你看到一个以.tar
为扩展名的文件名,它表示一个普通的tar
归档文件,如果它以.tgz
结尾,它表示一个被gzip
压缩过的归档文件。
tar
有几种模式。请记住,模式必须总是先被指定。
模式 | 描述 |
---|---|
c | 从文件和/或目录的列表中创建一个归档。 |
x | 提取一个归档。 |
r | 将指定的路径名,添加到归档的末尾。 |
t | 列出归档的内容。 |
我已经创建了几个文件夹和文件,我可以用tar cf playground.tar playground
归档它们。
image.png
我们可以使用v
选项(verbose)来获得更详细的列表。
image.png
我们可以在一个新的位置提取tar。请记住,除非我们是以超级用户的身份进行操作,否则从归档中提取的文件和目录的所有权是由执行恢复的用户来承担的,而不是原始的所有者。
image.png
tar
默认使用相对路径名而不是绝对路径名。这是非常有用的,因为它允许我们提取归档到任何位置,而不是必须提取到它们的原始位置。
你可以通过在tar
命令中加入尾部的路径名来限制从归档文件中提取的内容,tar
将只恢复指定的文件。你也可以指定多个路径名。通配符通常情况下不被支持,但GUN版本的tar
通过--wildcards
选项支持它们。
tar xf ../playground2.tar --wildcards 'home/azureuser/playground/dir-*/file-A'
image.png
现代版本的GNU tar
分别通过使用z
和j
选项,来直接支持gzip
和bzip2
压缩。
image.png
T
是-files-from
选项的缩写,它向tar
指出从哪里读取它的路径名列表,以前我们告诉tar
要使用的目录或文件,但现在我们使用-
选项,这让tar
知道要使用标准输入或输出作为要提取或归档的文件。-T
选项起初有点令人困惑。这个命令是在说:
find playground/ -name 'file-A'
查找playground
中与file-A
相匹配的所有文件|
将查找到的内容使用管道输出到tar
tar czf playground
创建一个被gzip
压缩的tar
,命名为playground.tgz
-T -
标准输出的文件,这些文件来自管道查找命令的标准输出。
参考资料
[1]
https://www.madebygps.com/an-intro-to-archiving-and-compression-in-linux/: https://www.madebygps.com/an-intro-to-archiving-and-compression-in-linux/
相关文章
- linux命令mysql启动,linux中mysql启动服务命令
- Linux在虚拟机中的实用命令(虚拟机linux命令)
- 命令Linux下Echo命令的使用方法(linux下echo)
- Linux基础命令快速上手:一步一步教学(linux基础命令教程)
- Linux 开放端口的指令——iptables(linux开端口命令)
- Linux自动挂载ISO: 快速实现方案(linux自动挂载iso)
- Linux命令掌握:输出技巧精彩编程(linux命令输出)
- Linux 清除登录历史: 秘籍揭示(linux清除登录记录)
- Linux系统下安装PIL(linux安装pil)
- Linux下重启FTP服务的命令指南(linux重启ftp命令)
- Linux信号量实现进程间同步(linux信号量同步)
- 实时监控Linux下实时监控内存使用情况(linux命令内存)
- Linux分支:掌握更多可能性(linux的分支)
- 镜像踏上制作Linux镜像之路的第一步(u启动制作linux)
- Linux下快捷查找命令实用指南(linux的查找命令)
- Linux:一部生命不息的兵书(linux兵书)
- Linux网络命令:掌握科学网络操作技能(linux网络相关命令)
- Linux如何停用网卡?快速了解关闭网卡的命令(linux关闭网卡命令)
- 轻松搞定:Linux下VPN一键搭建(linux一键搭建vpn)
- Linux: 如何快速切换到命令界面?(linux切换命令界面)
- 学会使用Linux命令中的“堆栈”技术(linux命令堆栈)
- 使用Linux查找文件名的命令(linux查找文件名命令)
- Linux内存管理之分页技术(linux内存分页)
- 命令Linux下防止误删除指令的方法(linux防止误删)
- 探究 Linux 网络架构下的设计原理与应用(linux网络架构)
- Linux下高效刻录命令实战指南(linux 刻录命令)
- 25个Linux命令练习题,让你成为Linux大师(linux命令练习题)
- Linux 下快速更改用户权限(linux更改用户)
- Linux下串口通信程序实现(linux 串口通信程序)
- 掌握Linux命令行,轻松操控系统(linux命令行命令)
- 探索Linux:如何简易安装Linux系统(如何装linux系统)