从嵌套的 tar.gz 文件复制文件

从嵌套的 tar.gz 文件复制文件

我遇到一种情况,我想从嵌套的 tar.gz 中提取文件。 .tar.gz的结构如下

  • 测试.tar.gz
    • 数据1
      • 数据2
        • 数据3
          • 测试2.tar.gz
            • 数据4
              • 数据5
                • 测试日志

我只想提取测试日志文件来自测试.tar.gz文件。我见过发布后,我们可以提取 tar.gz 文件,但不能在嵌套级别中提取。

我正在添加 tar tfz data1.tar.gz 的输出 文件夹结构可能与手动输入上述结构有所不同。


data1/.
data1/META.json
data1/TEMP
data1/TEMP/temp-2
data1/TEMP/temp-2/1-chksum.txt
data1/TEMP/temp-2/1
data1/TEMP/temp-2/1/otherfiles
data1/TEMP/temp-2/1/otherfiles/2016_06_24.tar.gz

所以测试日志文件存在于内部的嵌套文件夹中2016_06_24.tar.gz

答案1

假设 data4 等是压缩的 test2.tar.gz 存档的成员,并使用GNU tar 的--strip-components 选项:

tar xzOf ./test.tar.gz data1/data2/data3/test2.tar.gz | \
  tar xzf - --strip-components=2 data4/data5/test.log

...它告诉第一个tar将嵌套的压缩 tar 文件提取到标准输出,然后告诉第二个tar获取输入的文件并仅提取 data4/data5/test.log 文件,从而剥离前两个组件。这会将 test.log 文件放入当前目录中。如果您没有 GNU tar,只需删除 --strip-components 选项,文件就会使用其存档的路径进行提取。

相关内容