У меня есть ряд 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, ...