首页 > 解决方案 > 从 .tar.gz 归档文件中获取 tarball

问题描述

我有一些.tar.gz-Archives 并且只想解压缩 Tarball 以创建 -File 的 sha256-checksum 哈希.tar。(这样做的原因是存档将在稍后解压缩并重新打包,因为我们正在生成补丁文件。)

现在这似乎是一项容易的任务,但我被困住了。有以下 Gradle 示例:

  1. 解压tarTree(使用 Gradle Copy-Task 和tarTree(resources.gzip('model.tar.gz'))(来自文档:使用文件
  2. 解压缩文件(带zipTree),这不适用于 gzip 文件

这两种方法都不起作用,因为我需要创建.tar-File 本身的校验和。不幸的是,我不能使用commandLine或者gunzip因为任务应该在 Windows 和 Linux 上运行。

我现在能想到的唯一解决方案是将其解tar.gz压缩到 fileTree 并将其重新打包到 tar 文件中,但我什至不确定校验和是否相同。

真的没有办法直接做到这一点吗?

标签: gradlegziptargunzip

解决方案


最后我在同事的帮助下让它工作了。

使用resources.gzip()返回 a 的ReadableResource,我们可以将结果复制InputStream到带有IOUtils.copy.tar的-file 中:

file("test.tar").withOutputStream { outputFile ->
    IOUtils.copy(resources.gzip(file("test.tgz")).read(), outputFile)
}

我们还需要添加 Apache commons ( "commons-io:commons-io:2.6") 作为依赖项。


推荐阅读