Dividir arquivo gzip em arquivos gz menores sem recomprimir


9

Eu tenho um grande arquivo .gz. Gostaria de dividi-lo em 100 arquivos gzip menores, que podem ser descomprimidos por si só. Em outras palavras: não estou procurando uma maneira de dividir o arquivo .gz em partes que precisariam ser reunidas para poder descompactá-lo. Quero poder descomprimir cada um dos arquivos menores independentemente.

Isso pode ser feito sem recomprimir o arquivo inteiro?

Isso pode ser feito se o arquivo original estiver compactado --rsyncable? ("Atenda melhor ao programa rsync redefinindo periodicamente a estrutura interna do fluxo de dados compactados." Parece que esses pontos de redefinição podem ser bons lugares para se dividir e provavelmente incluir um cabeçalho.)

Isso pode ser feito para qualquer outro formato compactado? Eu imagino bzip2que seria factível - como é comprimido em blocos.


Você já tentou dividir -b?
George Vasiliou

3
@GeorgeVasiliou Não resultará em arquivos gzip menores que podem ser descompactados.
Ole Tange

A resposta para sua primeira pergunta é não, isso foi abordado em Excluir última linha do arquivo gz . A resposta provavelmente não é a maioria dos formatos compactados, pois o que você está pedindo vai contra a compactação. Eu acho que a resposta também não é gzip --rsyncablecerta, dado que “o gunzip não pode dizer a diferença” (se você pudesse encontrar um lugar para se dividir, poderia dizer que há um lugar para se dividir). Pode ser possível com o bzip2 devido ao seu peculiar recurso de bloco.
Gilles 'SO- stop be evil'

Isso pode ajudar: stackoverflow.com/a/22628945/4941495 Apenas deixe o fluxo de entrada padrão ser a saída de gzip -d -c bigfile.gz.
Kusalananda

Sem recomprimir, seria factível com um bzip2arquivo. Seria possível com gzou xzsomente comprimindo cada pedaço independentemente, portanto isso exigiria uma recompressão.
Xhienne

Respostas:


0

A divisão e a junção do arquivo grande funcionam, mas é impossível descompactar partes do arquivo compactado, porque informações essenciais são distribuídas por todo o conjunto de dados. Outra maneira; divida o arquivo descompactado e comprima as partes únicas. Agora você pode descomprimir cada peça. Mas por que? Você precisa mesclar todas as peças descomprimidas antes de continuar o processamento.


1
Curiosidade: Quando você tem as partes compactadas individualmente (usando gzipou xz), pode fazer concatenação e descompressão, ou descompressão e concatenação. A ordem não importa.
Kusalananda

Talvez isso dependa dos dados. Se você dividir e compactar imagens de disco, poderá recuperar partes do sistema de arquivos. Se você primeiro comprime e depois se divide, definitivamente não tem chance.
ingopingo

Não, e essa também não era minha premissa. Eu apenas disse que a ordem na qual você faz concatenação e descompactação quando você tem partes compactadas individualmente não importa (isso ocorre devido aos formatos de arquivo compactados). Se compactar primeiro e depois dividir, obviamente é necessário recombinar primeiro.
Kusalananda

Oh, isso é legal. Funciona, mesmo que cada parte contenha um cabeçalho de arquivo individual!
ingopingo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.