solaris的tar命令和linux中有点区别。如果不注意的话很容易犯错误。

版本:solaris 5.9

1.solaris中tar解包-C命令无效,无法指定目录来解包

2.solaris中创建tar包时一定要考虑好目录结构,如果创建包时为相对路径,则解压时也为相对路径。否则,解压时为绝对路径,并覆盖同名文件!!

例如: 在/tmp目录下有一个test文件.

用相对路径建立tar包

tar cvf /tmp/1.tar test

然后进入指定目录并解压

如果用绝对路径建包:

tar cvf /tmp/1.tar /tmp/test

再进入指定目录解包。

包直接解压到了/tmp文件夹中,如果该目录下有test,则会覆盖。

所以在solaris中解tar包一定要注意,不能靠经验直接解包。笔者曾经因为这样直接覆盖了一个数据库文件,导致数据库停机。

至于包中的文件是绝对路径还是相对路径,可以通过tar tvf tarfile 查看

3.如果包已经打成绝对路径了,怎样将其解成相对路径呢?

笔者查看了solaris 5.9 tar的帮助文档,发现没有对应选项。所以只能用pax命令来解包

cd $Home

pax -s:^/:./:g -r /dev/rmt/0

其中-s为替换选项。:^/:./:g 表示将开头的/换成./即当前目录。