我正在从备份中恢复我的Linux分区(大部分是非压缩的tarball)。我在提取一个tarball时遇到了一个问题,该tarball是同步android repo的备份。我用简单的tar -cf command
计算了我现有的回购的皮重,并用tar -xf blah.tar
提取它。我得到以下错误。
http://pastebin.com/rkyu9qvD
tar -tvf blah.tar
转储
http://pastebin.com/WyrwU3v2(截断)
我认为问题出在符号链接上。例如,考虑提取失败
.repo/projects/packages/providers/DownloadProvider.git/info/exclude
如果文件是按-t所示的顺序提取的(如果我错了,请纠正我),那么首先它应该提取.repo/projects/packages/providers/DownloadProvider.git/info
,因为它是符号链接(查看转储lrwxrwxrwx bootmgr/bootmgr 0 2014-03-23 11:02 .repo/projects/packages/providers/DownloadProvider.git/info -> ../../../../project-objects/platform/packages/providers/DownloadProvider.git/info
)我认为这就是为什么它在提取时出错的原因
例如,许多其他文件都是以这种方式错误提取的,首先它会创建a/b/c.x
路径来提取c.x
,但后来发现b是指向另一个目录的符号链接,然后抛出类似文件已经存在的错误
因此,我应该如何提取它的任何想法都是不可能的。
如果这是不可能的,那么任何其他更好的方式来备份现有的Android回购,这样我就可以将其移动到其他HDD。
来自tar文档:
Normally, when tar archives a symbolic link, it writes a block to the archive naming the target of the link. In that way, the tar archive is a faithful record of the file system contents. When
--取消引用'(-h') is used with
--创建')(-c'), tar archives the files symbolic links point to, instead of the links themselves.
所以试着用tar -chf ...
归档,我想你的问题会得到解决。