使用tar 命令打包数据时,有时候会报:从成员名中删除开头的“/”的警告,原因是什么呢?
例如:
[root@al_01 ~]# tar czvf /root/keystonerc.tar.gz /root/keystonerc_*
tar: 从成员名中删除开头的“/”
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
[root@al_01 ~]# tar tzvf keystonerc.tar.gz
-rw——- root/root 185 2014-01-07 18:16 root/keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 root/keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 root/keystonerc_laq
tar: 从成员名中删除开头的“/”
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
[root@al_01 ~]# tar tzvf keystonerc.tar.gz
-rw——- root/root 185 2014-01-07 18:16 root/keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 root/keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 root/keystonerc_laq
实际上,原因是打包的文件使用了绝对路径,改用相对路径就不会有这个警告了:
[root@al_01 ~]# tar czvf /root/keystonerc.tar.gz keystonerc_*
keystonerc_admin
keystonerc_demo
keystonerc_laq
[root@al_01 ~]# tar tzvf keystonerc.tar.gz
-rw——- root/root 185 2014-01-07 18:16 keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 keystonerc_laq
keystonerc_admin
keystonerc_demo
keystonerc_laq
[root@al_01 ~]# tar tzvf keystonerc.tar.gz
-rw——- root/root 185 2014-01-07 18:16 keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 keystonerc_laq
也可以使用-P 参数,强制指定为绝对路径:
[root@al_01 ~]# tar czvfP /root/keystonerc.tar.gz /root/keystonerc_*
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
[root@al_01 ~]# tar tzvf keystonerc.tar.gz
tar: 从成员名中删除开头的“/”
-rw——- root/root 185 2014-01-07 18:16 /root/keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 /root/keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 /root/keystonerc_laq
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
[root@al_01 ~]# tar tzvf keystonerc.tar.gz
tar: 从成员名中删除开头的“/”
-rw——- root/root 185 2014-01-07 18:16 /root/keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 /root/keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 /root/keystonerc_laq
它们的差别主要在于打包文件中的路径是不同的。当带-P 参数时,压缩包中的路径使用绝对路径方式,而没有-P 参数会自动删除前缀的根符号,也就是本文开头的提示信息。
这在解压时有很大的差异!
如果使用相对路径的压缩包,解压时会放到当前目录。而使用绝对路径的压缩包,则可以再通过-P 参数解压到绝对路径的位置上,而不同通过-C 参数指定起始路径了。
例如:
[root@al_01 ~]# tar tzvf keystonerc.tar.gz
tar: 从成员名中删除开头的“/”
-rw——- root/root 185 2014-01-07 18:16 /root/keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 /root/keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 /root/keystonerc_laq
[root@al_01 ~]# mkdir /tmp/dir
[root@al_01 ~]# cd /tmp/dir
[root@al_01 dir]# tar xzvf /root/keystonerc.tar.gz
tar: 从成员名中删除开头的“/”
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
[root@al_01 dir]# ll root/ <–当前目录中
总用量 12
-rw——- 1 root root 185 1月 7 18:16 keystonerc_admin
-rw——- 1 root root 170 1月 7 19:12 keystonerc_demo
-rw——- 1 root root 189 1月 8 18:21 keystonerc_laq
[root@al_01 dir]# tar xzvfP /root/keystonerc.tar.gz <–绝对路径,直接解压到/root目录下
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
tar: 从成员名中删除开头的“/”
-rw——- root/root 185 2014-01-07 18:16 /root/keystonerc_admin
-rw——- root/root 170 2014-01-07 19:12 /root/keystonerc_demo
-rw——- root/root 189 2014-01-08 18:21 /root/keystonerc_laq
[root@al_01 ~]# mkdir /tmp/dir
[root@al_01 ~]# cd /tmp/dir
[root@al_01 dir]# tar xzvf /root/keystonerc.tar.gz
tar: 从成员名中删除开头的“/”
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
[root@al_01 dir]# ll root/ <–当前目录中
总用量 12
-rw——- 1 root root 185 1月 7 18:16 keystonerc_admin
-rw——- 1 root root 170 1月 7 19:12 keystonerc_demo
-rw——- 1 root root 189 1月 8 18:21 keystonerc_laq
[root@al_01 dir]# tar xzvfP /root/keystonerc.tar.gz <–绝对路径,直接解压到/root目录下
/root/keystonerc_admin
/root/keystonerc_demo
/root/keystonerc_laq
那种方式都可以,注意解压参数即可,千万不要覆盖有用的文件了!
tar命令详解
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98265.html