我在5GB存档上使用此命令

tar -zxvf archive.tar.gz /folder/in/archive


这是执行此操作的正确方法吗?似乎永远没有命令行输出...

评论

您使用绝对路径还是相对路径?应该是相对的,除了看起来正确之外。您让它运行了多长时间?您的系统有多好?在高速计算机上至少需要几分钟。可能一个小时或更长时间?我正在运行测试。

是的,它在大约1小时后完成,但是绝对路径错误,您是正确的。

在Linux上,您可以使用cat / proc / $(pidof tar)/ fdinfo / 0(如果您正在运行多个tar进程,请修改该命令)来查看归档tar的距离。
重要的部分也不是结尾斜杠。使用文件夹/文件夹2 /将不起作用。

#1 楼

tar默认存储相对路径。 GNU tar甚至会这样说,如果您尝试存储绝对路径:

tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names


并记下确切的文件名。就我的foo.tar文件而言,我可以这样说来提取/home/foo/bar:它。您必须省去前导斜线。如果要模拟绝对路径,请首先执行cd /并确保您是超级用户。同样,它的作用也相同:

tar -tvf foo.tar


tar将路径转换为相对路径有非常明显的充分理由。一种是在原始来源以外的地方还原档案的功能。另一个是安全性。您可以提取档案,期望其文件出现在当前工作目录中,然后错误地覆盖其他地方的系统文件(或您自己的工作)。

注意:如果使用-P选项,则tar将存档绝对路径。因此,在提取之前检查大型档案的内容总是值得的。

评论


--strip-components = N在这里可能对某些人有用。

–触角
14年7月18日在21:57

就我而言,有必要写./foldername/而不是foldername,我想这是因为当我创建tar时,我用tar -cvf santi.tar ./*创建了它,而当我“列出” tar时,这是它说了什么drwxr-xr-x santi / santi 0 2016-04-11 09:42 ./foldername/

–圣地亚哥·亚利桑那
16年11月30日,下午3:32

关于.gz?

– Peter Krauss
17年8月4日在23:04

@PeterKrauss将-xvf更改为-xzvf(添加-z选项),并且显然将foo.tar更改为foo.tar.gz或您的存档名称。 -j(bz2)和某些最新版本的-J(xz)也是如此。否则,使用zcat foo.tar.gz之类的管道。 tar -xvf-…也可以。

–́Alexios
17年8月5日在6:40

请记住,如果您对提取过程中的所有详细输出感到厌倦,则只需跳过所有示例中的v。例如tar -tf foo.tar和tar -xf foo.tar ....

– Bo R
19年3月14日在12:34