~/Downloads/t1$ tar tf test.t
home/a/Downloads/t2/
home/a/Downloads/t2/z.txt
home/a/Downloads/t2/y.txt
~/Downloads/t1$ tar xf test.t
~/Downloads/t1$ ls ~/Downloads/t2
ls: cannot access ’/home/a/Downloads/t2’: No such file or directory
为什么会发生这种情况?这是因为我没有输入路径名吗?
答案1
ls home/a/Downloads/t2/
从您提取 tar 存档的目录中尝试。
注意tar t
列表中的路径不有前导斜杠,因此在提取存档时,它们将相对于当前工作目录,而不是相对于文件系统根目录。通常,这就是您想要的,因为将文件从存档中提取到可能的任何地方可能相当危险。
当然,在创建存档时,经常使用tar cf foo.tar t2
, 而不仅仅是tar cf foo.tar /home/a/t2
存储路径的相关部分。
但由于存档中已经有较长的路径,您可以 a) 转到根目录来提取它:
~$ cd /
/$ tar xf ~/Downloads/t1/test.t
或者使用一个选项来tar
删除不需要的部分,例如至少在 GNU tar 中:
--strip-components=NUMBER
提取时从文件名中删除 NUMBER 个前导组件。
所以,tar xf test.t --strip-components=3
应该做。