【问题标题】:Is it possible to create a folder with the filename into the tar file you are creating?是否可以在您正在创建的 tar 文件中创建一个带有文件名的文件夹?
【发布时间】:2015-12-29 23:09:25
【问题描述】:

假设我正在尝试 tar.gz /usr/local/bin/data/* 中的所有文件和文件夹

文件名将是data-2015-10-01.tar.gz。当我解压它时,根目录是否可能是 data-2015-10-01 后跟 data/* 内部的任何内容?

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

很遗憾,我不能这样做,因为程序会输出 /usr/local/bin/data/ 而我无法更改它。 cd /usr/local/bin 焦油... /data/*

【问题讨论】:

    标签: linux tar


    【解决方案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”,并将其中的所有内容提取到当前工作目录 data-2015-10-01 的目录中。因此,重命名的不是专门的 tar,但实际上您最终会得到相同的结果。

    【讨论】:

      【解决方案2】:

      我已经用符号链接完成了类似的事情。如果您尝试归档的目录结构中有(或可能有)符号链接,这不是一个很好的解决方案。我不得不说,我更喜欢@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
      

      (注意tar 调用中的附加-h 选项。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-21
        • 1970-01-01
        • 1970-01-01
        • 2018-02-05
        • 1970-01-01
        • 1970-01-01
        • 2016-08-02
        • 2018-09-22
        相关资源
        最近更新 更多