如何从大型 tar.gz 存档中提取单个文件夹?

如何从大型 tar.gz 存档中提取单个文件夹?

我正在使用这个命令5GB档案

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

这是正确的方法吗?没有命令行输出似乎要花很长时间......

答案1

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

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

如果您需要提取特定文件夹,请查看 tar 文件中的内容:

tar -tvf foo.tar

并记下确切的文件名。就我的foo.tar文件而言,我可以/home/foo/bar这样提取:

tar -xvf foo.tar home/foo/bar # Note: no leading slash

所以不,您发布的方式(不一定)不是正确的方式。您必须省略前导斜杠。如果您想模拟绝对路径,请cd /首先执行并确保您是超级用户。另外,这也有同样的作用:

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option

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

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

相关内容