Monday, March 9, 2009

gnu coreutils 之 tar

windows 下我们用 winRAR 来压缩、打包文件,相当爽。
不过,不知大家发现没有,其实用 winRAR 压缩时选择 zip 格式通常会快很多(代价是会比 rar 格式大一些,不过差不多少)。
在 unix 类系统下面,打包压缩通常就是 tar 了。曾经经过相当长时间的折磨,现在来总结一些 tar 的用法。那是相当的简单。
tar cf abc.tar f1.txt f2.txt
命令 [tar] + 压缩命令 [c] + 指定文件命令 [f] + 指定的文件名 [abc.tar] + 要压缩的文件列表 [f1.txt f2.txt]
以上就把 f1 和 f2 两个 txt 文件打包到 abc.tar 里了。这里比较怪异的是 abc.tar 跟 f1.txt 加上 f2.txt 一样大,没有压缩。是不是很逊?还好,继续。
tar zcf abc.tar.gz f1.txt f2.txt
在刚才的命令中加一个 [z],把文件名改一下,那么这个打出来的包就是压缩过的了。 为啥来,因为 [z] 的意思是打包的同时给压缩一下,压缩成 gzip 格式。
tar 内置支持的格式还有一个,比较厉害 bzip2。
tar jcf abc.tar.bz2 f1.txt f2.txt
把上面命令里的 [z] 换成 [j] 即可。
通常,这样压缩出来比 gzip 要小一点(当然,更加耗时),喜好哪种格式看各位吧。
要压缩的文件列表也可以加文件夹进去,那么这个文件夹就可以打包了。
然后看如何解压缩。
tar xf abc.tar
命令 [tar] + 解压命令 [x] + 指定文件命令 [f] + 指定的文件名 [abc.tar]
这个命令就会把包里文件释放出来了。
如果我之前压缩成 gzip 了怎么解压呢?
tar zxf abc.tar.gz
告诉 tar 这个文件是 gzip 格式就行,就是加一个 [z] 参数。
同理
tar jxf abc.tar.bz2
OK,
基本上都搞定了。
还是比较简单的。吧?
再说一些吧,
打包的时候尽量打包目录,这样别人解压缩的时候就不会解压出一堆文件,看的眼花缭乱。
上面各个示例命令的参数里面可以再加一个 v,
可以显示 tar 工作的详细内容,否则他就悄悄的干活,干完了就跑了,你也不知道他都干了些啥。
tar vjxf abc.tar.bz2
应该挺简单的吧。
我学习的时候最先看到的就是最长的 4 个参数一起,根本搞不清都啥跟啥,只能每次用的时候现查。
希望这些文字可以帮助你快一点掌握 tar 的用法。
:)

No comments: