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

Roh*_*han 1 tar archive

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

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

我只想从test.tar.gz文件中提取test.log文件。我看过这篇文章,我们可以用它提取 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
Run Code Online (Sandbox Code Playgroud)

因此test.log文件存在于2016_06_24.tar.gz内的嵌套文件夹中

Jef*_*ler 6

假设 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
Run Code Online (Sandbox Code Playgroud)

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