Можно ли точно воссоздать gzip-файл, имея исходный несжатый файл?

Можно ли точно воссоздать gzip-файл, имея исходный несжатый файл?

У меня есть ряд gzipфайлов, которые я хочу хранить более эффективно с помощью xz, не теряя при этом возможности отслеживания с помощью набора контрольных сумм gzip-файлов.

Я полагаю, что это равносильно возможности воссоздать файлы gzip из файлов xz, хотя я открыт для других предложений.

Чтобы уточнить... Если у меня есть файл gzip с именем target.txt.gz, и я распаковываю его в target.txtи удаляю сжатый файл, я хочу точно воссоздать исходный сжатый файл target.txt.gz. Под «точно» я подразумеваю, что криптографическая контрольная сумма файла должна указывать на то, что он в точности такой же, как и оригинал.

Сначала я думал, что это невозможно, поскольку файл gzip содержит метаданные, такие как исходное имя файла и временная метка, которые могут не сохраниться при распаковке, а также метаданные, такие как комментарий, исходная операционная система и флаги сжатия, которые почти наверняка не сохранятся при распаковке.

Но затем я решил изменить свой вопрос: существует ли минимальный объем информации заголовка, который я мог бы извлечь из файла gzip, чтобы в сочетании с несжатыми данными это позволило мне воссоздать исходный файл gzip.

И тогда я подумал, что ответ все равно может быть отрицательным из-за существования таких инструментов, какЦопфлии7-молния, который может создавать потоки, совместимые с gzip, которые лучше (и, следовательно, отличаются) от стандартной программы gzip. Насколько мне известно, формат файла gzip не записывает, какой из этих компрессоров его создал.

Поэтому у меня возникает вопрос: есть ли другие варианты, о которых я не подумал, но которые могли бы помочь мне все-таки достичь цели, изложенной в первом абзаце?

решение1

Это может быть полезно:https://github.com/google/grittibanzli

Grittibanzli — это инструмент для сжатия потока deflate в меньший файл, который можно снова декодировать в исходный поток deflate. То есть, он сжимает не только данные внутри потока deflate, но и связанную с deflate информацию, такую ​​как символы LZ77 и деревья Хаффмана, чтобы точно воспроизвести файл gzip, png, ...

Связанный контент