为什么 tar 无法改变当前目录?

为什么 tar 无法改变当前目录?

以下命令:

tar -C "${HOME}/temp" -zcvf uber-bundle.tgz temp

失败并出现以下错误:

tar: temp: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

然而,稍微不同的命令可以工作,尽管生成的 tar 具有错误的目录结构:

tar -C "${HOME}/temp" -zcvf uber-bundle.tgz ~/temp
tar: Removing leading `/' from member names
...

很明显,-C 选项无法将 tar 的当前目录更改为 ${HOME},导致目录无法识别。出了什么问题,如何修复?

答案1

这里发生的事情是 -C 选项告诉 tar 在创建存档之前先更改目录。因此,在第一个示例中,您所做的基本如下:

cd /home/whatever/temp/; tar -zcvf uber-bundle.tgz temp;

现在你确定在这个路径“/home/whatever/temp/”中有一个额外的“temp”目录吗?

在第二个例子中,由于您使用绝对路径 ~/temp 作为 tar 参数,即使 tar 将您的目录更改为 '/home/whatever/temp/',它也会根据 ~/temp 的参数进行操作,因此您执行以下操作:

cd /home/whatever/temp/; tar -zcvf uber-bundle.tgz ~/temp;

因此,在这种情况下,问题在于您正在创建当前所在目录的 tar 存档。

相关内容