作为一个不经常操作linux服务器的开发者,在为数不多的服务器操作过程中倒是经常会碰到压缩文件,见的最多的就是.tar或.tag.gz类的文件,偶尔见到个.tar.bz2、.gz、.Z等文件时就懵了,然后就要请教度娘……
Windows用久了,压缩解压都是现成的软件,文件名也无非.zip和.rar,久面久之也就把打包和压缩的界限搞混当成一个概念了,我想肯定还有一大批的技术童鞋们也是跟我一样傻傻的不分吧,是不是感觉到有点囧。今天专门学习了一下Linux压缩与解压的知识,发现一时半会还真是学不完……太多了,不过终于搞清楚了两个概念:打包和压缩。
打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助其它的工具将这一大堆文件先打成一个包,然后再进行压缩。来看看操作系统对tar指令的说明:
tar is a file archive utility that takes a number of files, with pathnames, and puts them into a single binary file. It doesn't do anything to compress the data.
我平常使用最多的就是tar -zxf和tar -zcf这两条指令来解压或压缩成tar.gz文件,以致于一直将tar指令当成是压缩指令,今天才发现tar是一个打包程序而非专门的压缩程序……但是却可以结合指定参数完成打包并压缩两项工作,看看GNU对tar程序的解释:
An archiving program designed to store and extract files from an archive file known as a tarfile. A tarfile may be made on a tape drive, however, it is also common to write a tarfile to a normal file. The first argument to tar must be one of the ptions Acdrtux, followed by any optional functions. The final arguments to tar are the names of the files or directories which should be archived. The use of a directory name always implies that the subdirectories below should be included in the archive.
可以看出tar指令必须要结合指定的参数才能使用,并且第一参数必须是Acdrtux几个参数中的一个,我们常用的估计也就是c和x最多了,下面列举几个常用的tar用法示例:
#tar -cf archive.tar
将当前路径下的所有文件打包成一个叫archive.tar的包文件,-c是表示创建新的包文件,-f指定包文件的名称。
#tar -cf archive.tar *.jpg
将所有的.jpg文件打包
#tar -rf archive.tar te*.jpg
将所有以te开头的.jpg文件增加到archive.tar包文件中去,-r是增加文件到现有的包文件中。
#tar -uf archive.tar test.jpg
更新archive.tar包文件内原来的test.jpg,-u表示更新文件,也就是替换的意思,可以用来替换已经打包好文件中的指定文件。
#tat -tf archive.tar
列表包文件中的所有文件,-t表示列出包文件都打包了哪些文件。
#tar -xf archive.tar
还原archive.tar文件到当前目录,-x表示还原文件的意思,即恢复打包出的多个文件(目录)形式。
tar在使用过程中还可以结合压缩程序一起使用:
1)调用gzip
gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。tar中使用-z这个参数来调用gzip。
#tar -czf archive.tar.gz *.php
打包并压缩所有的php文件,也可不指定文件类型,打包并压缩当前路径下的所有文件。
#tar -xzf archive.tar.gz
解压并还原所有文件
2)调用bzip2
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。tar使用-j这个参数来调用bzip2。
#tar -cjf archive.tar.bz2
打包并压缩文件
#tar -xjf archive.tar.bz2
解压并还原所有文件
3)调用compress
compress命令是一个相当古老的unix档案压缩指令,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是compress压缩的结果。与compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用compress。
#tar -cZf archive.tar.Z
打包并压缩所有文件
#tar -xZf archive.tar.Z
解压并还原所有文件
有了上面的整理,相信你对解压多种格式的文件了,下面来个文件解压的总结:
1)对于.tar结尾的文件
tar -xf all.tar
2)对于.gz结尾的文件
gzip -d all.gz
gunzip all.gz
gunzip等同于gzip -d
3)对于.tgz或.tar.gz结尾的文件
tar -xzf all.tar.gz
tar -xzf all.tgz
4)对于.bz2结尾的文件
bzip2 -d all.bz2
bunzip2 all.bz2
bunzip2等同于bunzip2 -d
5)对于tar.bz2结尾的文件
tar -xjf all.tar.bz2
6)对于.Z结尾的文件
uncompress all.Z
7)对于.tar.Z结尾的文件
tar -xZf all.tar.z
Tips:
1)压缩文件的时候,不可乱用后缀名;
2)多数压缩指令只能对文件进行压缩,不能压目录,即使目标文件是目录,也只是当目录下的文件进行一一压缩。
3)Linux也可安装zip程序,zip压缩文件,unzip解压文件,与Windows下的.zip文件通用。
评论已关闭!