J'ai un gros fichier .gz. Je voudrais le diviser en 100 fichiers gzip plus petits, chacun pouvant être décompressé par lui-même. En d'autres termes: je ne cherche pas un moyen de découper le fichier .gz en morceaux qu'il faudrait reconstituer pour pouvoir le décompresser. Je veux pouvoir décompresser chacun des petits fichiers indépendamment.
Peut-on le faire sans recompresser tout le fichier?
Peut-on le faire si le fichier d'origine est compressé avec --rsyncable
? («Répondez mieux au programme rsync en réinitialisant périodiquement la structure interne du flux de données compressé.» Des sons comme ces points de réinitialisation pourraient être de bons endroits pour se séparer et probablement ajouter un en-tête.)
Peut-il être fait pour n'importe quel autre format compressé? J'imagine que ce bzip2
serait faisable - car il est compressé en blocs.
gzip --rsyncable
étant donné que «gunzip ne peut pas faire la différence» (si vous pouviez trouver un endroit pour vous séparer, vous pourriez dire qu'il y a un endroit pour se séparer). Cela pourrait être faisable avec bzip2 en raison de sa fonction de blocage particulière.gzip -d -c bigfile.gz
.bzip2
fichier. Ce serait faisable avecgz
ouxz
seulement en compressant chaque morceau indépendamment, donc cela nécessiterait une recompression.Réponses:
Le fractionnement et la jointure du gros fichier fonctionnent, mais il est impossible de décompresser des morceaux du fichier compressé, car les informations essentielles sont distribuées à travers l'ensemble de données. Autrement; diviser le fichier non compressé et compresser les pièces individuelles. Vous pouvez maintenant décompresser chaque pièce. Mais pourquoi? Vous devez fusionner toutes les pièces décompressées avant de poursuivre le traitement.
la source
gzip
ouxz
), vous pouvez effectuer la concaténation et la décompression, ou la décompression et la concaténation. L'ordre n'a pas d'importance.