我有一堆巨大的.tar.gz档案,每个档案都包含一个文件。有没有简单明了的方法将它们转换为.gz?是什么东西会从gzip压缩文件中删除TAR头而不解压缩它?
比tar xpfvz file.tar.gz -O | gzip > file.gz
更好的东西请:)
答案 0 :(得分:0)
原则上可以,但我不知道可以做到这一点的现有代码。你需要自己动手。
您需要从压缩数据中删除tar标头。您可以使用zlib解压缩第一个deflate块,该块应包含所有标头。 (如果没有,请对后续块重复。)然后,您可以删除标题并重新压缩剩余的标题。然后附加其余的放气块。后者需要将流的其余部分移位0到7位,因为deflate块可以在字节中的任何位位置开始和结束。您还需要解压缩余数,以便计算新的CRC以放入gzip流的预告片中。