前言
Linux 有三个罕用的压缩命令:gzip
、bzip2
和 tar
。本文介绍它们的区别和简略用法。
压缩文件
数据压缩是去除数据中冗余局部的过程,须要通过压缩算法实现。这些算法可分为两类:
- 无损压缩:保留原始文件中蕴含的所有数据。
- 有损压缩:在进行压缩时删除数据,以便利用更多的压缩。当文件被复原时,它与原始版本不统一,是一个近似值。JPEG和MP3是有损压缩的例子。
gzip命令
该命令被用来压缩一个或多个文件。它将原始文件替换为压缩版本。
该命令的语法为gzip file
。
咱们能够应用gunzip
来解压缩。
gzip有诸多选项,应用命令man gzip
查看残缺的列表。
如果想要查看压缩的文本文件的内容,能够应用gunzip -c
或者 zcat
进行查看。
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
归档它们。
咱们能够应用v
选项(verbose)来取得更具体的列表。
咱们能够在一个新的地位提取tar。请记住,除非咱们是以超级用户的身份进行操作,否则从归档中提取的文件和目录的所有权是由执行复原的用户来承当的,而不是原始的所有者。
tar
默认应用相对路径名而不是绝对路径名。这是十分有用的,因为它容许咱们提取归档到任何地位,而不是必须提取到它们的原始地位。
你能够通过在tar
命令中退出尾部的路径名来限度从归档文件中提取的内容,tar
将只复原指定的文件。你也能够指定多个路径名。通配符通常状况下不被反对,但GUN版本的tar
通过--wildcards
选项反对它们。
tar xf ../playground2.tar --wildcards 'home/azureuser/playground/dir-*/file-A'
古代版本的GNU tar
别离通过应用z
和j
选项,来间接反对gzip
和bzip2
压缩。
T
是-files-from
选项的缩写,它向tar
指出从哪里读取它的路径名列表,以前咱们通知tar
要应用的目录或文件,但当初咱们应用-
选项,这让tar
晓得要应用规范输出或输入作为要提取或归档的文件。-T
选项起初有点令人困惑。这个命令是在说:
find playground/ -name 'file-A'
查找playground
中与file-A
相匹配的所有文件|
将查找到的内容应用管道输入到tar
tar czf playground
创立一个被gzip
压缩的tar
,命名为playground.tgz
-T -
规范输入的文件,这些文件来自管道查找命令的规范输入。