Как получить 100% идентичные сжатые файлы, для исходных файлов, которые отличаются только датой создания?

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

Я хочу использовать максимум 1 ГБ оперативной памяти при сжатии. Я склоняюсь к асимметричному алгоритму, потому что файлы, которые у меня есть, довольно большие, и они занимают не менее часа, чтобы сжать LZMA1 "ultra" в 7-zip на машине P4 с 1 ГБ оперативной памяти и больше ничего не работает. Я думаю, что 7-zip и FreeARC можно использовать для моих целей. Я попытался найти команды, которые я должен использовать, но мне не очень повезло.

редактировать: 100% идентичные файлы должны быть произведены, даже если даты создания разные. Это должно быть возможно через -- nodates в Freearc, и с ???? в 7-zip. Я ищу эквивалентную команду для 7-zip и способ стандартизировать сжатие на нескольких компьютерах.

8
задан Andy
19.11.2022 0:15 Количество просмотров материала 3604
Распечатать страницу

4 ответа

создать пару одинаковых файлов:

$ echo hello > file1.test
$ echo hello > file2.test

gzip в них...

$ gzip file1.test
$ gzip file2.test

поле наблюдать timestamp как только разница:

$ hexdump file1.test.gz

0000000 8b1f 0808 TIME STMP 0300 6966 656c 2e31
0000010 6574 7473 cb00 cd48 c9c9 02e7 2000 3a30
0000020 0636 0000 0000                         

для получения дополнительной информации о метке времени см. RFC

теперь вы можете либо взять MD5, который начинается после байта 8, обнулить эти четыре байта в ваших файлах и потерять их временные метки, либо извлечь CRC16 из этих gzips (Также см. RFC для получения информации о том, как извлечь это)

или, вы могли бы сохранить без метки времени:

$ echo test > file1.test
$ echo test > file2.test
$ gzip -n file1.test
$ gzip -n file2.test
$ md5sum file1.test.gz
cfe4ddf1c4c3891b4ff4a1269b42db82  file1.test.gz
$ md5sum file2.test.gz
cfe4ddf1c4c3891b4ff4a1269b42db82  file2.test.gz
10
отвечен Gareth Davidson 2022-11-20 08:03

не прямой ответ на ваш вопрос, но это может помочь в любом случае.

давным-давно (другое тысячелетие) у меня была та же проблема. Мы хотели бы знать, если сжатые файлы, где же без распаковки их и сравнивая их.

нашим решением было получить md5sum файла перед сжатием, затем мы сжали файл и переименовали его в md5sum.zip (.zip или .смола.gz или .Рар или .как угодно). Таким образом, мы знали, что если два файла имели одинаковые названия (без суффикса) они где то одинаковые.

3
отвечен Nifle 2022-11-20 10:20

pristine-tar имеет взломанную версию gzip, которая всегда дает те же результаты (и другой для bzip2). Выберите вариант алгоритма и метку времени, и вы хорошо идти.

2
отвечен Tobu 2022-11-20 12:37

взломать источники 7-zip. Где он читает дату файла, просто вставьте код, чтобы изменить дату на 01.01.1997, или что - нибудь другое-фиксированный для всех файлов. Компилируйте с другим именем и используйте его.

1
отвечен kagali-san 2022-11-20 14:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх