是否可以在您正在创建的tar文件中创建一个带有文件名的文件夹?

时间:2015-10-01 19:24:26

标签: linux tar

让我们说我试图tar.gz / usr / local / bin / data / *中的所有文件和文件夹

文件名为data-2015-10-01.tar.gz。当我解开它时,根目录是否可能是数据-2015-10-01,后面是data / *内部的内容?

如果没有,我如何tar / usr / local / bin / data / *但是从/ data /文件夹级别开始?

由于程序吐出/ usr / local / bin / data /而我无法更改,因此我无法执行此操作。      cd / usr / local / bin      tar ... / data / *

2 个答案:

答案 0 :(得分:1)

有几种方法可以做我认为你想要完成的事情。首先,您可以在创建存档时使用-C选项进行tar。这会在创建存档之前将tar的当前工作目录更改为该目录。在您的情况下不是严格要求,但可能有帮助。

#tar -C / usr / local / bin -czf data-2015-10-01.tar.gz data / *

至少可以将您带到名为data的单个目录。如果您可以控制提取(手动或通过提供给任何人解压缩的脚本),那么您可以在提取时执行以下操作:

#mkdir -f data-2015-10-01&& tar -C data-2015-10-01 --strip-components = 1 -xzf data-2015-10-01.tar.gz

这将删除第一个路径,即“数据”,并从那里提取所有内容到您当前工作目录的目录data-2015-10-01。因此,重命名并不是专门的tar,但你最终会得到相同的结果。

答案 1 :(得分:0)

我用符号链接完成了类似的事情。如果您在尝试存档的目录结构中有(或可能有)符号链接,这不是一个很好的解决方案。我不得不说我更喜欢@ geis'解压缩提取物上的顶级目录,但这为您提供了另一种选择。

ln -s /usr/local/bin/data data-2015-10-01
tar -cvhf data-2015-10-01.tar.gz data-2015-10-01/
rm data-2015-10-01

(请注意-h调用中的其他tar选项。)