我正在尝试获取 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
创建一个具有正确名称的文件。