在Unix系统的业务使用中(尤其是数据管理和备份),经过一番研究和整理,我充分利用Unix系统的命令tar、cpio、compress进行打包压缩,使其充当类似于DOS的压缩软件,在Unix系统中也是通用的。
在Unix系统中,许多文件通过cpio或tar封装成一个文件库,然后通过compress对文件库进行压缩。下面分别用cpio和tar描述所用的方法和步骤。
一. cpio
1.文件或目录打包。
包装有如下多种情况:
a)带子目录的包:
find/usr/lib-print | cpio-o \8592;/u0/temp 1 . cpio
将/usr /lib目录中的文件和子目录打包到名为/u0/temp1.cpio的文件库中。
如果用-o选项打包整个目录下的所有文件和子目录,那么经常用find directory name - print找出所有文件和子目录的名称,通过管道“|”将文件和子目录传输到cpio进行打包。
b)没有子目录的打包:
ls/usr/lib | cpio-o \\/u0/temp 1 . cpio
将/usr/lib目录下的文件(不包括子目录下的文件)打包到文件库/u0/temp1.cpio中。
c)特定文件的打包:
在文本搜索命令grep和pipeline的帮助下,可以排除或选择要发送到cpio进行打包的特定类型的文件。例如ls/usr/lib/*。c | cpio-o >/u0/temp1.cpio。
或者ls/usr/lib | grep。c $' | cpio-o >/u0/temp1.cpio。
意思是找到以结尾的文件。c放在/usr/lib目录中,并将它们打包。
再比如:ls/usr/lib | grepabcd | cpio-o >/u0/temp 1 . cpio,意思是把/usr/lib目录中带有abcd字符的文件找出来打包。
ls/usr/lib | grep-v abcd | cpio-o >/u0/temp 1 . cpio,意思是找出/usr/lib目录中没有ABCD字符的文件并打包。grep命令中的-v选项意味着排除包含字符串的行和列。
这样就可以充分利用Unix管道和一些命令的强大功能来打包文件。
2.压缩:
文件打包后,您可以使用Unix中的compress命令(在/usr/bin下)来压缩打包的文件。对于一般的文本文件,压缩率更高,最高可达81%。
Compress /u0/temp1.cpio将文件库/u0/temp1.cpio压缩成/u0/temp1.cpio.Z(自动添加。z并删除/u0/temp1.cpio)。
3.解压:
解压缩/u0/temp1.cpio.Z会自动恢复到/u0/temp1.cpio.
4.拆包和展开:
按照原来的目录结构解包,展开到当前目录。如果是以相对路径打包的,在解包和展开时,展开的文件数据也存储在相对路径中;如果以绝对路径打包,那么在解包和展开时,展开的文件数据也存储在绝对路径中。所以如果是相对路径,应该先输入对应的目录,然后展开。
cd /u1
Cpio-id
如果添加了u选项,比如cpio-iud
Cpio-id
5.显示:
Cpio-it
第二,焦油
1.文件或目录打包:
tar -cvf /u0/temp2.tar /usr/lib
将/usr/lib目录中的文件和子目录打包到名为/u0/temp2.tar的文件库中。
tar -cvf /u0/temp2.tar /usr/lib *。c *。f
打包文件(不包括子目录),如*。c * *。c *。f在/usr/lib目录中。
注意:如果指定一个文件,如*。c * *。c *。f或*。*,它将被打包,没有子目录。如果指定为。或者*,有子目录。
2.压缩:
同上:compress /u0/temp2.tar压缩成/u0/temp2.tar.z。
3.解压:
解压缩/u0/temp2.tar.Z恢复到/u0/temp2.tar。
4.拆包和展开:
tar -xvf /u0/temp2.tar
如果是用相对路径打包的,解包时,扩展后的文件数据会用相对路径存储;如果是以绝对路径打包,那么解包时,扩展后的文件数据会以绝对路径存储。
如果指定扩展文件名,应该注意文件的目录路径。
5.显示:
Tar tar -tvf /u0/temp2.tar显示文件库中的文件名。指定文件名时,还应该注意文件的路径。
相对来说,这两个命令各有利弊。
1)tar比cpio慢,不能跨两个存储介质,但文件格式在几乎所有Unix系统中通用,易于使用。
2)因为2)cpio可以通过管道函数,所以在打包时有非常强的文件选择和排除功能,可以跨多个介质,备份特殊的系统文件。
此外,压缩命令compress在DOS下的压缩率低于Pkzip。经测试,一个目录下共15.7MB的527个文本文件,在Unix下打包,用compress压缩,大小为2.1MB。如果把同一个文件拷贝到DOS系统,用Pkzip压缩,大小是1.4MB。