我正在尝试提取 tarball(确切地说是 *.tgz)并在提取的符号链接上收到终端错误。不幸的是,我不能简单地重新创建存档,因为这是一个不再存在的系统的遗留存档,它是在我高中毕业之前创建的(必须喜欢在大公司工作)。
我咨询过万能的Google;然而我似乎只能找到排除/跟随符号链接的信息创建时间。我收到的确切错误是用词不当(错误:只读文件系统),并且来自这样一个事实:很大一部分数据有效负载包含在众多的挤压/填充/循环文件系统中。符号链接引用其中的数据,显然,由于提取所述 tarball 时出现错误而无法安装这些数据。鸡;遇见鸡蛋。
所以,简而言之:
如何在忽略符号链接或忽略由此产生的符号链接错误的情况下完成提取 *.tgz 存档?
以供参考:
$ tar --version
tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
$ uname -a
Linux localhost.localdomain 3.7.9-205.fc18.x86_64 #1 SMP Sun Feb 24 20:10:02 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
答案1
-h(或--dereference)取消引用仅在创建时起作用。
参考:http://www.gnu.org/software/tar/manual/tar.html#SEC138
根据这里的类似答案:从 tar 文件中提取时如何取消引用链接? 您可以安装存档然后从中复制,尽管我自己还没有测试过。
答案2
你喜欢的事情可以轻松完成。称呼:
star -x f=archive.tgz -find ! -type l
最新的star
资源都在schilytools
包里。star
是最古老的免费 tar 实现。