Разбиение gzip-файла на меньшие gz-файлы без повторного сжатия


9

У меня есть большой файл .gz. Я хотел бы разбить его на 100 меньших GZIP-файлов, каждый из которых может быть распакован сам по себе. Другими словами: я не ищу способ нарезать файл .gz на куски, которые нужно было бы собрать вместе, чтобы иметь возможность распаковать его. Я хочу иметь возможность распаковывать каждый из меньших файлов независимо.

Можно ли это сделать без повторного сжатия всего файла?

Можно ли это сделать, если исходный файл сжат --rsyncable? («Лучше обслуживать программу rsync, периодически сбрасывая внутреннюю структуру потока сжатых данных. Похоже, что эти точки сброса могут быть хорошими местами для разделения и, возможно, с добавлением заголовка.)

Это можно сделать для любого другого сжатого формата? Я предположил bzip2бы, что это выполнимо - поскольку это сжато в блоках.


Вы пробовали разделить -b?
Георгий

3
@GeorgeVasiliou Это не приведет к уменьшению размера gzip-файлов, которые можно распаковать.
Оле Танге

Ответ на ваш первый вопрос - нет, это было описано в разделе Удалить последнюю строку файла gz . Ответ, вероятно, нет в большинстве сжатых форматов, поскольку то, что вы запрашиваете, идет вразрез со сжатием. Я думаю, что ответ также не с gzip --rsyncableучетом того, что «gunzip не может определить разницу» (если бы вы могли найти место для разделения, вы могли бы сказать, что есть место для разделения). Это может быть выполнимо с bzip2 из-за его специфической особенности блока.
Жиль "ТАК - перестань быть злым"

Это может помочь: stackoverflow.com/a/22628945/4941495 Просто позвольте стандартному входному потоку быть выходом gzip -d -c bigfile.gz.
Кусалананда

Без повторного сжатия это было бы выполнимо с bzip2файлом действительно. Это было бы выполнимо с gzили xzтолько путем сжатия каждого куска независимо, так что это потребовало бы повторного сжатия.
xhienne

Ответы:


0

Разделение и объединение большого файла работает, но невозможно распаковать части сжатого файла, потому что важная информация распространяется по всему набору данных. Другой путь; разбить несжатый файл и сжать отдельные части. Теперь вы можете распаковать каждый кусочек. Но почему? Вы должны объединить все распакованные детали перед дальнейшей обработкой.


1
Интересный факт: если у вас есть отдельно сжатые части (используя gzipили xz), вы можете выполнять конкатенацию и декомпрессию или декомпрессию и конкатенацию. Порядок не имеет значения.
Кусалананда

Возможно, это зависит от данных. Если вы разбиваете и сжимаете образы дисков, у вас есть шанс восстановить части файловой системы. Если вы сначала сжимаете, а потом разделяете, у вас точно нет шансов.
Ингопо

Нет, и это тоже не было моей предпосылкой. Я только что сказал, что порядок, в котором вы делаете конкатенацию и декомпрессию, когда у вас есть отдельно сжатые части, не имеет значения (это связано с форматами сжатых файлов). Если сначала сжимать, а потом расщеплять, то, очевидно, нужно сначала рекомбинировать.
Кусалананда

О, это круто. Это работает, хотя каждая часть содержит отдельный заголовок файла!
Ингопо
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.