tar包、压缩与解压缩

 

在Unix下常遇到一些解包、压包的问题。一般情况下将若干文件或文件夹打成tar包,是为了便于文件的传输和管理。例如,通过FTP从Unix平台下载目录结构较多的文件夹到Windows平台或另外一Unix平台,虽然文件夹不是太大,但由于每个文件很小,且非常多,每个文件都要进行文件头、尾检查校验。下载速度会非常慢。如果打成tar包,传输就会快很多。存档的文件夹打成tar包也容易管理。
值得注意的是:tar文件只是将文件或文件夹打包,并没有进行压缩。如果文本文件较多,对其压缩会节省很大的磁盘空间,传输将更快。压缩和解压缩方法可以参考下文给出的示例。
下面我以Sun Solaris 5.8(其他unix如linux、aix大体相同)为例,就常见的一些问题向各位同仁作一下介绍,供大家在工作中参考。因水平有限,仅做抛砖引玉,欢迎大家积极补充。

1、如何解开.tgz或.tar.gz文件?
2、如何解开.z或.Z文件?
3、如何解开.tar.Z文件?
4、如何安装、卸载、列出rpm包信息?(linux常用)
5、如何使用tar命令测试、展开、生成tgz包?
6、如何解开和生成tar文件?
7、如何象在PC上的ARJ那样的分解打包软件?
8、在Unix下如何压缩文件?
9、如何解开和生成其他包如.jar文件?
10、抛砖引玉,待同仁补充

============================================================
1、如何才能解开.tgz或.tar.gz文件?
1)方法一:
gzip -d filename.tar.gz 或 gzip -d filename.tgz
tar -xvf filename.tar
2)方法二:
解压并列表:
gzip -dc filename.tgz | tar xvf – #解.tgz文件
gzip -dc filename.tar.gz | tar xvf – #.tar.gz 同 .tgz文件
只列表不生成文件:
gzip -dc filename.tgz | tar tvf – #解.tgz文件
gzip -dc filename.tar.gz | tar tvf – #.tar.gz 同 .tgz文件
gzip的其他使用方法参见gzip -h

============================================================
2、如何才能解开.z或.Z文件?
1)解.z 文件: gzcat filename.z
2)解.Z 文件:uncompress -c filename.Z

============================================================
3、如何解.tar.Z文件?
1)解压并列表:
zcat filename.tar.Z | tar xvf – #解.tar.Z文件
uncompress -c tast.tar.Z | xvf – #uncompress -c 同 zcat
2)只列表不生成文件:
zcat filename.tar.Z | tar tvf – #解.tar.Z文件
uncompress -c filename.tar.Z | tvf – #uncompress -c 同 zcat

============================================================
4、如何安装、卸载、列出rpm包信息?(linux常用)
1)安装rpm包时显示进度,例如:用-vh参数,如rpm -ivh ipchains-1.3.6-1.i386.rpm
2)直接通过ftp来安装rpm包,例如:rpm -i
3)校验所有的rpm包,查找丢失的文件,例如:rpm –Va
4)查找一个文件属于哪个rpm包,例如:rpm -qf /usr/bin/who
5)列出一个rpm包的描述信息,例如:rpm -qpi mon-0.37j-1.i386.rpm
6)列出一个rpm包的文件信息,例如:rpm -qpl mon-0.37j-1.i386.rpm
7)列出并过滤已经安装的包,例如:rpm –q |grep IBM
8)删除已安装的包,例如:rpm –e 包名
9)其他rpm操作参见 # rpm –help

============================================================
5、如何使用tar命令测试、展开、生成tgz包?
tar zvfx filename.tgz #在当前目录下展开这个包
tar zvft filename.tgz #只测试不展开
tar zvfx filename.tgz -C /new-dir #展开后放到/new-dir目录下
tar zvfc filename.tgz /filename #把/filename目录下所有的文件及子目录打包成filename.tgz

============================================================
6、如何解开和生成tar文件?
tar xvf filename.tar #当先目录解包
tar tvf filename.tar #只显示不生成文件
tar cvf filename.tar <file or dir list> #生成包
tar的参数很多,要仔细学习参见#tar -h

============================================================
7、如何象在PC上的ARJ那样的分解打包软件?
# split -b 100k big.file
将big.file分解成若干500K的小文件 (名为xa, xb, xc, …)
# split -l 500 big.file
将big.file分解成每个500 lines的小文件
其它使用方法参见split –h

============================================================
8、在Unix下如何压缩文件?
在unix下压缩方法有多种,可以参见gzip、gunzip、zcat、compress等工具文档,也可以参见上面所述的一些方法。下面仅以compress命令示例:
例如:需要将/filename的文件打包并压缩,需要做以下步骤:
1)打包
tar cvf filename.tar ./dir
2)压缩
compress filename.tar #生成filename.tar.Z文件
如果还原回原来的目录结构
1)解压缩
uncompress filename.tar.Z
3)解tar包
tar xvf filename.tar
如果unix命令参数不熟悉,一般也可以通过ftp将压缩或打包文件传到PC上,利用Windows下的Winzip或rar等压缩工具解开。

==========================================================
9、如何解开和生成其他包如.jar文件?
在unix上生成和解开jar包和对tar包的操作差不多。
例如:
jar cvf filename.jar /dirname #将/dirname 打成jar包
jar xvf filename.jar #解开jar包
jar tvf filename.jar #只列表不解开jar包

eclipse中svn更改ip

我们项目组的应用程序是通过SVN进行版本控制的,通过安装Eclipse的SVN插件后,每次程序进行下载、同步、提交、更新,便可在Eclipse进行Synchronize、CheckOut、Commit、Update,非常方便。但是今天出了点小状况:版本控制器更换了地方,IP也变了。这样的话,我们自己机器这边没法进行同步了。如果重新以新的版本控制器的地址进行CheckOut,则原先自己本机上的程序就没法进行管理了,非常不爽。自然想到修改本机程序的版本控制器地址,这里就要借助一个客户端工具:小乌龟TortoiseSVN,幸好偶机器上有装。
首先在你自己程序所在工程的根目录下,点击鼠标右键,如下图:

选择TortoiseSVN–>Relocate,这时会跳出如下对话框:

修改文本框上面的IP地址为你目前版本控制器的地址即可。这时,你再回到Eclipse的界面,查看你程序的SVN版本控制器的URL,你将非常惊讶地发现:

上面的地址已经更新为你刚才输入的新的版本控制器的地址了,很神奇吧!

有一个问题:很多人会想(其实我也想到了),能否不借助小乌龟TortoiseSVN,而直接在Eclipse上进行修改呢?可惜的是,找了老半天,没找到其"神秘入口"所在……欢迎指教!

[题外话:]
晚上吃完饭走进平安大厦来加班的时候,经常和我们碰面的保安同志也耐不住了,向我们甩一句:
“天天加班啊?……”很愤怒的样子…… 足以见证安硕的加班已令“千”夫所指!