LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1760|回复: 8

求助tar解压怎么保证符号连接的问题

[复制链接]
发表于 2009-3-15 03:39:07 | 显示全部楼层 |阅读模式
我曾经用tar备份了主目录
可我发现解压之后,很多符号连接挂了,很多目录权限也挂了。
我运行的命令是 tar xzvf backup.tgz -p -s

而且我发现连接到当前目录的符号连接都是好的, 只是联到当前目录树外的都挂了..
不知道tar的参数应该怎么写好
 楼主| 发表于 2009-3-15 09:58:36 | 显示全部楼层
lrwxrwxrwx root/root         0 2009-01-06 07:35 bin/pidof -> ../sbin/killall5
-rwxr-xr-x root/root      4516 2008-08-12 22:09 bin/mountpoint
-rwxr-xr-x root/root      4428 2008-04-29 09:57 bin/dmesg
-rwxr-xr-x root/root     27424 2008-04-29 09:57 bin/more
-rwxr-xr-x root/root      4880 2008-04-29 09:57 bin/tailf
-rwxr-xr-x root/root     35236 2008-11-23 00:01 bin/login
-rwsr-xr-x root/root     27108 2008-11-23 00:01 bin/su
-rwxr-xr-x root/root      7984 2009-02-10 10:56 bin/mktemp
-rwxr-xr-x root/root     75724 2009-01-12 05:49 bin/ps
-rwxr-xr-x root/root     13148 2009-01-12 05:49 bin/kill
-rwxr-xr-x root/root    236884 2008-04-17 09:33 bin/tar
-rwxr-xr-x root/root    113772 2009-03-03 11:02 bin/cpio
-rwxr-xr-x root/root     30396 2008-06-22 12:26 bin/fbset
-rwxr-xr-x root/root     28172 2009-03-03 11:02 bin/mt-gnu
-rwxr-xr-x root/root     40260 2008-11-16 06:32 bin/ed
-rwxr-xr-x root/root    103048 2008-11-17 00:54 bin/netstat
-rwxr-xr-x root/root    201484 2009-03-02 23:15 bin/ip
-rwsr-xr-x root/root     30788 2007-12-10 12:03 bin/ping
-rwsr-xr-x root/root     26616 2007-12-10 12:03 bin/ping6
-rwxr-xr-x root/root      6500 2009-03-13 08:37 bin/lsmod
-rwxr-xr-x root/root    149600 2008-08-26 23:49 bin/nano
lrwxrwxrwx root/root         0 2009-01-06 07:36 bin/rnano -> nano
-rwxr-xr-x root/root      4409 2008-06-22 12:25 bin/modeline2fb
-rwxr-xr-x root/root     20156 2008-06-28 17:14 bin/nc.traditional
lrwxrwxrwx root/root         0 2009-01-06 07:36 bin/mt -> /etc/alternatives/mt
lrwxrwxrwx root/root         0 2009-01-06 07:36 bin/nc -> /etc/alternatives/nc
lrwxrwxrwx root/root         0 2009-01-06 07:36 bin/netcat -> /etc/alternatives/netcat

像这里面的几个符号连接就都挂了, rnano除外
回复 支持 反对

使用道具 举报

发表于 2009-3-15 12:31:48 | 显示全部楼层
按道理来说是没有关系的,做链接做成软链,只要目录结构不变,就不会有问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-15 12:33:17 | 显示全部楼层
Post by jarryson;1961153
按道理来说是没有关系的,做链接做成软链,只要目录结构不变,就不会有问题



我上面给的是tar tvf的一部分。
解压之后ls -l的效果是这样的:
那几个连到外面的连接,ls出来的结果是大小为0的普通文件。。。
直接导致系统不可用了。。
回复 支持 反对

使用道具 举报

发表于 2009-3-15 13:08:07 | 显示全部楼层
man tar
  -p, --preserve-permissions, --same-permissions
                             extract information about file permissions
                             [color="Red"](default for superuser)
      --preserve             same as both -p and -s
      --same-owner           try extracting files with the same ownership
  -s, --preserve-order, --same-order
                             sort names to extract to match archive

如果是 root 权限 -p -s 都是多余的。
另解包时,-z -j 也是多余的。

您用什么用户打包的?
您打包的命令是什么?
执行打包命令时所在目录是什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-15 13:29:07 | 显示全部楼层
Post by 聚焦深空;1961162
man tar


如果是 root 权限 -p -s 都是多余的。
另解包时,-z -j 也是多余的。

您用什么用户打包的?
您打包的命令是什么?
执行打包命令时所在目录是什么?


用root打包。命令 cd / && tar cf asdf.tar bin boot etc usr opt [省略]
解压命令 是在空盘上执行的.

不过我已经开始怀疑那个tar损坏了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-15 13:32:20 | 显示全部楼层
Post by 聚焦深空;1961162
man tar


如果是 root 权限 -p -s 都是多余的。
另解包时,-z -j 也是多余的。

您用什么用户打包的?
您打包的命令是什么?
执行打包命令时所在目录是什么?


用root打包。命令 cd / && tar cf asdf.tar bin boot etc usr opt [省略]
解压命令 是在空盘上执行的.

然后我现在还遇到一个诡异问题:
我用root执行如下命令:
cd /tmp && nc -l 127.0.0.1 -p 1234 | tar xf - &
cd / &&  tar cf - bin/ boot/ | nc 127.0.0.1 1234 &

之后去tmp, ls /bin 结果是
-rwxr-xr-x 1 root root  27424 2008-04-29 more
-rwsr-xr-x 1 root root  64112 2008-04-29 mount
-rwxr-xr-x 1 root root   4516 2008-08-12 mountpoint
---------- 1 root root      0 03-15 13:17 mt
-rwxr-xr-x 1 root root  28172 03-03 11:02 mt-gnu
-rwxr-xr-x 1 root root  85776 02-23 06:40 mv
-rwxr-xr-x 1 root root 149600 2008-08-26 nano
---------- 1 root root      0 03-15 13:17 nc
-rwxr-xr-x 1 root root  20156 2008-06-28 nc.traditional
---------- 1 root root      0 03-15 13:17 netcat
-rwxr-xr-x 1 root root 103048 11-17 00:54 netstat
lrwxrwxrwx 1 root root      6 03-15 13:17 open -> openvt
-rwxr-xr-x 1 root root  10524 02-21 02:13 openvt
---------- 1 root root      0 03-15 13:17 pidof
-rwsr-xr-x 1 root root  30788 2007-12-10 ping
-rwsr-xr-x 1 root root  26616 2007-12-10 ping6
-rwxr-xr-x 1 root root  75724 01-12 05:49 ps
-rwxr-xr-x 1 root root  30876 02-23 06:40 pwd
lrwxrwxrwx 1 root root      4 03-15 13:17 rbash -> bash
-rwxr-xr-x 1 root root  37688 02-23 06:40 readlink
-rwxr-xr-x 1 root root  52508 02-23 06:40 rm
-rwxr-xr-x 1 root root  27868 02-23 06:40 rmdir

然后我 rm -rf /tmp/bin /tmp/boot
cd / ; tar cvf /tmp/asdf.tar bin boot; cd /tmp ; tar xvf asdf.tar
ls -l /bin-rwsr-xr-x 1 root root  64112 2008-04-29 mount
-rwxr-xr-x 1 root root   4516 2008-08-12 mountpoint
lrwxrwxrwx 1 root root     20 03-15 13:27 mt -> /etc/alternatives/mt
-rwxr-xr-x 1 root root  28172 03-03 11:02 mt-gnu
-rwxr-xr-x 1 root root  85776 02-23 06:40 mv
-rwxr-xr-x 1 root root 149600 2008-08-26 nano
lrwxrwxrwx 1 root root     20 03-15 13:27 nc -> /etc/alternatives/nc
-rwxr-xr-x 1 root root  20156 2008-06-28 nc.traditional
lrwxrwxrwx 1 root root     24 03-15 13:27 netcat -> /etc/alternatives/netcat
-rwxr-xr-x 1 root root 103048 11-17 00:54 netstat
lrwxrwxrwx 1 root root      6 03-15 13:27 open -> openvt
-rwxr-xr-x 1 root root  10524 02-21 02:13 openvt
lrwxrwxrwx 1 root root     16 03-15 13:27 pidof -> ../sbin/killall5
-rwsr-xr-x 1 root root  30788 2007-12-10 ping
-rwsr-xr-x 1 root root  26616 2007-12-10 ping6
-rwxr-xr-x 1 root root  75724 01-12 05:49 ps
就正常了

不知道怎么回事
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-15 15:48:01 | 显示全部楼层
哦,我知道了。是tar在退出的时候才把跨目录的连接写好。
所以要保证tar正常退出。。。
nc不太容易正常退出
回复 支持 反对

使用道具 举报

发表于 2009-3-15 20:30:40 | 显示全部楼层
建议楼主备份系统的时候参照gentoo wiki的stage4那个相当简单。备份多次从来没出过错误。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表