Reempacotando um arquivo tar ou tar.gz em arquivos tar / tar.gz menores

3

Eu tenho um arquivo tar.gz que contém alguns milhões de arquivos. Eu quero dividir o conteúdo sem descompactá-lo devido a um limite no número de arquivos. Existe uma maneira de dividir um arquivo tar / tar.gz em vários tar / tar.gz.

se não for possível, pode ser feito em python?

1º post, deixe-me saber se fiz algo errado.

Edit: Eu não quero colocá-lo de volta. Eu quero ser capaz de trabalhar em cada arquivo 'dividido'.

    
por Joshua Cabanas 03.07.2016 / 21:55

3 respostas

2

Você pode dividi-lo com split , mas as peças individuais não farão sentido até serem colocadas juntas. Se você quiser dividi-lo em arquivos independentes, precisará descompactá-lo.

    
por 03.07.2016 / 22:09
1

A divisão é a ferramenta certa para isso.

Para dividir um arquivo em blocos de 10 MB

split -b10m /path/to/file parts

Para juntar tudo

cat parts* > file

    
por 03.07.2016 / 22:07
1

Não é possível dividir o arquivo compactado tar em partes sem descompactação: a compactação é aplicada na parte superior do 'fluxo tar' e esse fluxo é tratado por um compressor como um fluxo binário opaco.

Assim, qualquer ferramenta que possa produzir um conjunto de arquivos tar do seu arquivo tar comprimido original irá descompactá-lo.

O tar em si não tem um modo que use tar archive como entrada e produz outro tar como um arquivo de saída, além dos modos append e delete .

Como seu arquivo tar é muito grande, você provavelmente não deseja descompactá-lo várias vezes para extrair um arquivo por porção enquanto cria um arquivo separado para cada conjunto de arquivos extraídos.

Existe uma biblioteca de tar do python que provavelmente permite o processamento de arquivos tar em 'voo' (eu sou não é tão strong em python para verificar isso sozinho). Assim, você pode desenvolver um script python que leia itens do arquivo de origem e, em seguida, anexe-os ao arquivo de saída atual até que seu tamanho atinja um limite de sua escolha. Então, o script criaria o próximo arquivo de saída e prosseguirá.

    
por 03.07.2016 / 23:08

Tags