昨晚写的awk,说实话,对我而言,那是一个最复杂的命令.写得不是很好,可能在结构组织上面有很大的问题.后续有心得会再调整修改.
本文将介绍linux的一组打包命令.这其中有我们最常用的tar,也有我们几乎没有见过的mksquansh.接下来就随我一起了解一下吧.
1. gzip 和 gunzip
gzip是linux平台最常用的压缩格式,不过其职能对单个文件进行压缩,所以我们采用的方式是先用tar将多个文件处理成一个文件,然后在用gzip对其进行压缩,这也是为什么其压缩后的后缀名是tar.gz.下面看看gzip的用法.
gzip对应的是tar命令的z选项.如果我们不用tar命令的z选项.就需要像如下的方式使用.
tar cvf filename.tar [filelist] (我们把这个过程称为归档)
gzip filename.tar (这个过程称为压缩)
这样就可以生成一个后缀名为tar.gz的文件.只是我们一直使用tar命令,以为归档和压缩是回事,但是可以看到.其实并不是一回事.
gzip的几个常用的选项如下:
-l 列出压缩文件的属性信息,当然,得是gz后缀的文件.
-c 将压缩后的内容输出到stdout.
我们可以指定压缩率:1 - 9 .gzip的压缩率从1-9递增.1表示压缩率最小,但是压缩速度最快.9表示压缩率最大,但是速度最慢.
从上面我们可以看到,就是我漏掉了一点,gzip压缩会删除掉源文件,gunzip解压缩会删除掉压缩文件.
另外还有一个命令zcat.可以不用压缩查看gzip压缩格式的文件.
2. bzip2 和bunzip2
再来看看bzip.和gzip几乎是一个模子的.区别仅仅在于使用的压缩技术.对应到tar就是j.
同样需要注意,bzip2也是一对一的,不能指定多个文件,另外bzip2也是会删除源文件.这两点和gzip没有区别.
bzip2也有-c选项,效果和gzip还是一样的.
另外同样可以指定1 - 9 级的压缩率,这一点和gzip又是一样的.
类似的,我们可以使用bzcat命令不用解压缩就查看bz2的压缩包内容.
遗憾的是,我没有找到类似gzip -l这样的选项.ok.不做演示了.模仿gzip,我们可以熟练的使用bzip2
3. lzma 和 unlzma
一个较新的压缩工具,对应tar命令的选项--lzma.不多说了.和bzip2几乎完全一样.
可以使用-k来避免删除掉源文件,每一次职能压缩一个文件,需要结合tar归档来达到压缩多个文件的目的.压缩后会删除源文件
可以指定1 - 9 的压缩率.同样通过-c将压缩结果输出到stdout.
另外同样提供lzcat命令,不解压缩就可以查看压缩包内容.
其压缩后的后缀名是lzma.
貌似这三个命令是杠上了.
4. tar
如果说上面三个命令各自为政,那么tar命令,如同秦始皇统一六国一样,将上面的三个命令融合在了一起.并且提供了更为方便快捷的操作.
-a 自动识别压缩类别.用于解压缩的场景
-j bz2后缀,用来对文件进行bz2方式的压缩或者解压缩
-z gzip的方式压缩和解压缩.后缀gz
--lzma lzma后缀,用来对文件进行lzma的压缩和解压缩
-c 创建一个归档文件
-x 解开一个归档文件
-f 无论是解压缩还是压缩,无论是归档还是解档.其后始终跟的是归档文件.
-v 在归档过程中显示详细信息.
-t 不解压缩查看压缩包里面的文件列表.注意是文件列表.不像上面三个命令提供的**cat一样,前者是查看文件列表,后者查看的是文件内容.
-C 指定一个解压缩的文件夹.注意这个文件夹必须是存在的.
tar的应用可以说是最广泛的.掌握这些常用的它的用法就显得尤为必要
5. cpio
另一款多文件归档的命令是cpio,它将指定的多个文件和文件夹归档到一个文件,并且保存源文件的所有属性.
它从stdin接收输入,然后把结果输出到stdout.所以我们需要重定向.
-o 指定命令作为归档使用.
-v 在归档过程中打印归档文件列表,复用了stderr作为文件列表打印的描述符.
-i 指定此命令作为解档使用.
-t 列出归档文件中的文件列表.
-d 解档
5. squanshfs
这肯定是最屌的一个压缩命令.你完全可以好不掩饰的发出吃惊的声音,因为它实在太给力了.当然它并没有对应的解压缩.它利用的是环回的方式来达到查看其内容的目的.
mksquashfs source dst.squashfs
这就是它的用法.它还可以指定选项.
-e 放在source后面,用来指定在source中需要排除的内容.
正如所有的资料所说,既然squashfs是应对高压缩的,所以当我们需要归档1k的文件是,还是省省力气吧.我们需要直接面对squash压缩大文件的场景.
压缩完成.我们来做一个直观的对比.
从原来的1.6G的文件,到显现的759M.压缩率达到了%50以上.再来看一下里面的内容.
前面我的文章介绍过.我们有两种方式去查看一个环回文件.
第一种是直接mount.
mount -o loop zzworkspace.squanshfs /mnt/loop
第二种方式是首先建立一个环回设备,然后挂载这个环回设备.
losetup /dev/loop1 zzworkspace.squanshfs
mount -o /dev/loop1 /mnt/loop
ok. 关于linux的压缩命令就介绍这些.这个过程真是一个不错的复习,在整理的过程中,有很多地方已经忘记了.回头又翻看了一下书籍.加深了一下印象.
希望以上的内容能够对同学们有所帮助.