用 tar 提取硬链接文件

用 tar 提取硬链接文件

我正在尝试获取 tar 文件夹中所有文件的列表,将它们全部显示在带有下载文件链接的页面上。单击单个文件后,将下载该文件。除了硬链接文件之外,这一切都工作正常

我用来提取单个文件的命令是

tar --extract --file=abc.tar.xz abc.file

但如果文件是硬链接,那么它会给我错误,有没有办法获取硬链接文件?

答案1

问题在于 tar 如何存储文件。所以,例如

$ echo hello > a
$ ln a b
$ tar cf foo.tar a b
$ tar tf foo.tar
a
b

当您尝试仅提取一个文件时会出现问题

$ mkdir Y
$ cd Y
$ tar xvf ../foo.tar b
b
tar: b: Cannot hard link to `a': No such file or directory
tar: Exiting with failure status due to previous errors

您需要做的是查看详细内容列表显示

$ tar tvf foo.tar 
-rw-r--r-- sweh/sweh         6 2016-06-13 10:43 a
hrw-r--r-- sweh/sweh         0 2016-06-13 10:43 b link to a

现在您可以看到“b”的长度为零,类型为“h”(第一个字符),并被标记为“链接到”。这会告诉您需要提取的真实文件。

在这种情况下,您可能需要使用“O”选项(发送到标准输出),因此您最终会tar Oxvf ../foo.tar a > b创建一个具有正确名称的文件。

相关内容