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

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

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

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

8
задан 20.11.2010, 19:05

4 ответа

Создайте несколько идентичных файлов:

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

gzip их...

$ gzip file1.test
$ gzip file2.test

наблюдайте поле метки времени как единственную разницу:

$ 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
11
ответ дан 07.12.2019, 13:51

Не прямой ответ на Ваш вопрос, но это могло бы помочь так или иначе.

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

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

3
ответ дан 07.12.2019, 13:51

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

2
ответ дан 07.12.2019, 13:51

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

1
ответ дан 07.12.2019, 13:51

Теги

Похожие вопросы