У меня есть большой файл .gz. Я хотел бы разбить его на 100 меньших GZIP-файлов, каждый из которых может быть распакован сам по себе. Другими словами: я не ищу способ нарезать файл .gz на куски, которые нужно было бы собрать вместе, чтобы иметь возможность распаковать его. Я хочу иметь возможность распаковывать каждый из меньших файлов независимо.
Можно ли это сделать без повторного сжатия всего файла?
Можно ли это сделать, если исходный файл сжат --rsyncable
? («Лучше обслуживать программу rsync, периодически сбрасывая внутреннюю структуру потока сжатых данных. Похоже, что эти точки сброса могут быть хорошими местами для разделения и, возможно, с добавлением заголовка.)
Это можно сделать для любого другого сжатого формата? Я предположил bzip2
бы, что это выполнимо - поскольку это сжато в блоках.
gzip --rsyncable
учетом того, что «gunzip не может определить разницу» (если бы вы могли найти место для разделения, вы могли бы сказать, что есть место для разделения). Это может быть выполнимо с bzip2 из-за его специфической особенности блока.gzip -d -c bigfile.gz
.bzip2
файлом действительно. Это было бы выполнимо сgz
илиxz
только путем сжатия каждого куска независимо, так что это потребовало бы повторного сжатия.Ответы:
Разделение и объединение большого файла работает, но невозможно распаковать части сжатого файла, потому что важная информация распространяется по всему набору данных. Другой путь; разбить несжатый файл и сжать отдельные части. Теперь вы можете распаковать каждый кусочек. Но почему? Вы должны объединить все распакованные детали перед дальнейшей обработкой.
источник
gzip
илиxz
), вы можете выполнять конкатенацию и декомпрессию или декомпрессию и конкатенацию. Порядок не имеет значения.