*最近的重心都放在了Linux_C编程上,也没时间仔细研读<鸟哥的Linux私房菜>*鸟哥的Linux私房菜>
今天先来总结一下关于文件打包与压缩吧
提起文件的打包与压缩,想必大家都会提起的一个软件就是WinRAR
从接触电脑开始,很经典的一个打包压缩软件,之后还出现了诸如7Z,2345好压等一系列的压缩软件
那么,在Linux/UNIX平台上,又是如何处理压缩文件的问题呢?
一,关于压缩
既然要说打包压缩,那么,首先应该知道为什么需要进行文件压缩?
现在的计算机硬件发展日新月异,TB已经成为计算机硬盘容量的标配了,
你可能会说:怎么会需要压缩呢?直接放原始文件不就行了?
表面上看来,的确是这样.但是,打包压缩在现在的计算机技术应用中还有很重要的作用,一一道来
之所以会使用压缩,是因为历史原因,在当年计算机硬件技术落后,
磁盘不能很好的起到便携大文件的作用,所以衍生出压缩技术
来看看压缩技术的实质:
实际上,在我们的计算机中,一个文件所占的空间并不是它是实际的大小,即使在看上去装满了的文件
它其中还是有很大一部分得空闲空间的,而压缩技术,就是要把这部分空间挖出来而应运而生的
压缩技术,主要分这么两类:
- 将一个字节中未使用的内容,压缩出来,比如,一个字节记录了数字1,那么,它其他7位都是补0,而压缩技术就是
要把这些0,给收集起来的,至于收集的算法,在这里不予讨论
- 另一种情况就是将文件中的重复元素记录下来,并进行记录,以使的空间紧凑
至于为什么压缩技术会成功,其中很大一部分原因还是因为有大量的文本文件,而这些文件都是ASCII格式的
其中就会有更多得空余空间! ! !
举一个最直观的例子:2.6.x版本的内核原始文件300MB左右,压缩后只有60MB,压缩的效率可见一斑
说了这么多,那么压缩技术的应用呢?
++1. 可以使你的硬盘中存储更多的数据 (虽然现在硬盘已经很大了…)++
++2. 在网络数据传输时,文件越小,传输效率越高,宽带利用率越高 ++
二,Linux下常见的压缩命令
既然压缩技术这么好用,那么我们就来看看如何使用压缩命令吧
首先来看看,压缩文件常见的扩展名吧!
*.z (表示compress压缩的文件)
*.gz (gzip程序压缩出来的文件)
*.bz2 (bzip2压缩的文件)
*.tar tar打包的文件(并非压缩文件)
*tar.gz (tar打包后,使用gzip压缩的文件)
*tar.bz2 (tar打包后,使用bzip2压缩的文件)
还是和之前介绍的一样,
在Linux系统中,文件的扩展名可有可无,但是为了使用方便,加上扩展名以便于区分文件
Compress,此命令已经十分久远,而且其压缩效率也很不堪,此处不予详解
下面来详解,gzip与bzip2两个常用的压缩命令
1.gzip
上面提到了,Compress已经不常用了,而gzip便是Compress的替代品
先来看几个常用的参数
-c 将结束输出到屏幕上,可以之后使用重定向
-d 解压缩的参数
-t 用来检验文件的一致性
-v 显示一些进行压缩时的信息,如压缩比之类的
-#,压缩等级有1-9 九级,用速度换压缩效果,数字越大,速度越慢
结合上面命令便是
压缩命令 gzip -ctv file
解压命令 gzip -d file
而且,对于gzip压缩产生的文件,*.gz,可以直接使用命令 zcat进行不解压查看文件
2.bzip2
如果说上面gzip时为了取代Compress而产生的,那么bzip2就是为了取代gzip而产生的
重要的一点,bzip2的压缩效率比gzip提高了许多
bzip2的参数基本上与gzip是相同的,来看一些不同的参数
-k,保留源文件,而不会删除原始的文件
-z,压缩的参数
同时,同gzip类似的是通过bzcat命令,也可以读出bzip2压缩的文件
重要的第二点,兼容关系 bzip2 > gzip > Compress
3.tar 打包命令
可能你会奇怪,为什么我没有用截图来演示压缩命令的用法
等你看完tar打包命令就知道为什么了,
++细心一点你可能会发现,上面的三个命令都是对于单文件进行压缩的++
++实际上他们也可以对多文件压缩,但是,压缩出来的结果,5个源文件压缩成为5个压缩文件++
++实际上没有实际意义,基本是废掉了++
++所以,就要使用我们现在最常用的tar打包命令++
++何为打包,即为将多个文件进行打包成为一个大文件++
而这样也就满足了我们将多个文件进行压缩成为一个大的压缩文件的需求
来看一看tar的常用参数:
-c 新建打包文件,搭配-V显示过程中被打包的文件名
-t 查看打包文件中含有哪些文件
-x 解压缩火或者解打包的参数
-j 通过bzip2的压缩方式进行处理打包文件
-z 通过gzip的压缩方式处理打包文件
-v 在压缩的过程中将处理的文件名显示出来
-f 表示要处理的文件名
-C 表示解压操作要处理的目录
乍看之下,的确是十分复杂,所以我们抽丝剥茧,跳出其中最常用的关键内容:
以下默认使用bzip2处理,也可以使用gzip
1.处理压缩命令 tar -jcv -f 目标文件 源文件
2.处理解压命令 tar -jxv -f 目标文件 -C 想要解压的目录
3.查看压缩文件 tar -jtv -f 目标文件
以上即为常用的tar操作,其他的用法自行搜索
这里要强调一点,即使是在以后使用命令的时候也是十分有用的
即,在进行-f -C这些选项的使用时,需要十分注意,选项的顺序问题,理论上,选项的顺序与命令的执行是无关的
但是,选项后跟的参数就很关键了,-jcv -f 与 -jcfv都是可以的,但是,-f后,v也称为了文件名的一部分
这就会造成很大的问题了,所以,需要谨慎的处理这些问题
下面简单说说几个tar的有趣操作
1.打包,但并不包含,
有的时候,你想要打包整个目录的文件,但是又不想包括其中的一些文件,怎么办呢?
–exclude=FILE就是一个十分好的办法
e.g. tar -jcv -f filename.tar.bz2 /root --exclude=root*
2.以时间为参数进行文件的区别并打包
tar -jcv -f failname.tar.bz2 --newer-mtime="2008/02/12" 源文件
使用 –newer-mtime 参数对于处理这样的问题十分方便
三,文件的备份工具
因为,我对此处没有深入区分析,所以不好对此进行详解,仅提供命令,有兴趣的读者可以去尝试
1.文件备份工具:dump
2.恢复备份:restore
3.新建镜像文件:mkisofs
4.光盘刻录工具:cdrecord
5.制作大文件:dd
6.万能的备份工具:cpio
Vim的操作与使用
这一章本来是独立的,但是我不准备进行细讲,因为,Vim讲的话无非就是命令的使用
在此处推荐三个三个东西
1.我自己在用的Vim配置文件
spf13(我觉得是与spaceemacs同级别的怪兽)
2.小组很多人也在用的配置文件(从网上的足迹来看应该是某位小组的学长写的)
3.推荐一本书吧
学习vi和vim编辑器 O’reilly出品,必属精品
Vim的学习是一个长久的过程,用的越多,会的越快也越熟练
所以,平时多多使用Vim吧,Vim会让你沉迷Conding的
August 3, 2017 10:18 AM