让我们说我试图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 / *
答案 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
选项。)