今天在做solaris中关于tar命令的练习,发现了一个有趣的地方,现在跟大家分享一下~
1、使用tar命令对/etc/rc3.d这个目录进行归档操作,归档文件放到/tmp下,文件名为rc3d.tar。
[root@solaris187:/]# tar cvf /tmp/rc3d.tar /etc/rc3.d
a /etc/rc3.d/ 0K
a /etc/rc3.d/README 2K
a /etc/rc3.d/S50apache 3K
a /etc/rc3.d/S52imq 6K
a /etc/rc3.d/S84appserv 1K
a /etc/rc3.d/S16boot.server 1K
a /etc/rc3.d/S80mipagent 1K
[root@solaris187:/]# ls -l /tmp
-rw-r--r-- 1 root root 16896 Mar 13 15:58 rc3d.tar
2、将文件rc3d.tar展开
[root@solaris187:/]# cd /tmp
[root@solaris187:/tmp]# tar xvf rc3d.tar
x /etc/rc3.d, 0 bytes, 0 tape blocks
x /etc/rc3.d/README, 1285 bytes, 3 tape blocks
x /etc/rc3.d/S50apache, 2452 bytes, 5 tape blocks
x /etc/rc3.d/S52imq, 5840 bytes, 12 tape blocks
x /etc/rc3.d/S84appserv, 824 bytes, 2 tape blocks
x /etc/rc3.d/S16boot.server, 474 bytes, 1 tape blocks
x /etc/rc3.d/S80mipagent, 344 bytes, 1 tape blocks
[root@solaris187:/tmp]# ls -l
-rw-r--r-- 1 root root 16896 Mar 13 15:58 rc3d.tar
这时可以发现解压以后,tmp下面没有一个rc3.d的文件夹,说明解包以后,文件覆盖了原来的文件。那我们能不能把文件解压到我们指定的目录上呢?我man了一下tar命令,发现只有在打包的时候才有可以指定目录,解包的时候无法指定目录。
[root@solaris187:/tmp]# tar xvf rc3d.tar -C /tmp/
tar: 2 file(s) not extracted
提示没有办法解压,又查询了别的资料,在linux平台试了一下,成功了,这个命令可用,但solaris不可用。
那究竟有没有办法把文件解包到当前目录下面呢?大家再看我下面的操作:
[root@solaris187:/]# cd /etc
[root@solaris187:/etc]#tar cvf /tmp/rc3d2.tar rc3.d
a rc3.d/ 0K
a rc3.d/README 2K
a rc3.d/S50apache 3K
a rc3.d/S52imq 6K
a rc3.d/S84appserv 1K
a rc3.d/S16boot.server 1K
a rc3.d/S80mipagent 1K
[root@solaris187:/etc]# cd /tmp
[root@solaris187:/tmp]# ls
dana@11am.send rc3d.tar ssh-LpGLg878 ssh-mlqdm874
hsperfdata_noaccess rc3d2.tar ssh-OtYYG868 ssh-xMEDD850
hsperfdata_root ssh-EjkI1002 ssh-ZoyMj854
ogl_select363 ssh-LTPOf858 ssh-bfvh1056
[root@solaris187:/tmp]# tar xvf rc3d2.tar
x rc3.d, 0 bytes, 0 tape blocks
x rc3.d/README, 1285 bytes, 3 tape blocks
x rc3.d/S50apache, 2452 bytes, 5 tape blocks
x rc3.d/S52imq, 5840 bytes, 12 tape blocks
x rc3.d/S84appserv, 824 bytes, 2 tape blocks
x rc3.d/S16boot.server, 474 bytes, 1 tape blocks
x rc3.d/S80mipagent, 344 bytes, 1 tape blocks
[root@solaris187:/tmp]# ls
dana@11am.send rc3.d ssh-LTPOf858 ssh-bfvh1056
hsperfdata_noaccess rc3d.tar ssh-LpGLg878 ssh-mlqdm874
hsperfdata_root rc3d2.tar ssh-OtYYG868 ssh-xMEDD850
ogl_select363 ssh-EjkI1002 ssh-ZoyMj854
不知道大家发现没有,这时我解包的时候就有一个rc3.d的目录了,这是什么原因呢?我对solaris中自带tar命令的总结如下,仅供参考:
1、打包的时候,如果使用的是绝对路径( tar cvf /tmp/rc3d.tar /etc/rc3.d),那么解包的时候就会被自动解包到原来的地方;如果使用的是相对路径( tar cvf /tmp/rc3d.tar rc3.d),那么就可以在把包展开到包存放的位置。
2、solaris系统自带的tar包比较低级,不支持压缩功能,也不支持解包到指定的目录中。
3、关于solaris tar包的高级版本的下载,现在居然要收费了……