Reempaquetar un file tar o tar.gz en files tar / tar.gz más pequeños

Tengo un file tar.gz que contiene algunos millones de files. Quiero dividir los contenidos sin descomprimir debido a un límite en la cantidad de files. ¿Hay alguna manera de dividir un file tar / tar.gz en múltiples tar / tar.gz?

si no es posible, ¿se puede hacer en python?

Primera publicación: hágamelo saber si hice algo mal.

Editar: No quiero volver a armarlo. Quiero poder trabajar en cada file "dividido".

Solutions Collecting From Web of "Reempaquetar un file tar o tar.gz en files tar / tar.gz más pequeños"

Puede dividirlo con split , pero las piezas individuales no tendrán ningún sentido hasta que vuelvan a estar juntas. Si desea dividirlo en files independientes, deberá descomprimirlo.

dividir es la herramienta adecuada para ello.

Para dividir un file en 10MB

split -b10m /path/to/file parts

Para armarlo

cat parts* > file

No es posible dividir el file tar comprimido en partes sin descompression: la compression se aplica sobre la 'stream de tar' y esta stream es tratada por un compresor como una stream binaria opaca.

Por lo tanto, cualquier herramienta que pueda producir un set de files tar desde su file tar comprimido original en realidad lo descomprimirá.

El tar no tiene ningún modo que tome un tar archive como input y produzca otro tar como un file de salida aparte de los modos de append y delete .

Como su file tar es bastante grande, probablemente no desee descomprimirlo varias veces para extraer files por partes mientras crea un file separado para cada set de files extraídos.

Hay una biblioteca de alquitrán de python que probablemente permite el procesamiento de files tar 'en vuelo' (no soy tan fuerte en python para verificar esto yo mismo). De modo que podría desarrollar un script de Python que leería elementos del file de origen y luego los agregaría al file de salida actual hasta que su tamaño scope el límite que usted elija. Luego, el script crearía el siguiente file de salida y continuaría.