Я хочу смочь сжать файл без потерь, и если исходный файл идентичен файлу другого пользователя, я хочу, чтобы оба из наших сжатых файлов соответствовали, даже если исходные даты файла отличаются.
Я хочу использовать максимум 1 ГБ RAM при сжатии. Я склоняюсь к асимметричному алгоритму, потому что файлы, которые я имею, являются довольно большими, и они занимают, по крайней мере, час для сжатия с LZMA1, "крайним" в с 7 zip на машине P4 с 1 ГБ RAM и ничего иного выполнения. Я думаю с 7 zip, и FreeARC может использоваться в моих целях. Я попытался найти команды, которые я должен использовать, но у меня нет большой удачи.
править: 100%-е идентичные файлы должны быть произведены, даже если даты создания отличаются. Это должно быть возможно через - записывает нотами в Freearc, и с???? в с 7 zip. Я ищу эквивалентную команду для с 7 zip, и способ стандартизировать сжатие через несколько компьютеров.
Создайте несколько идентичных файлов:
$ 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
Не прямой ответ на Ваш вопрос, но это могло бы помочь так или иначе.
Давным-давно (другое тысячелетие) у меня была та же проблема. Мы хотели знать если сжатые файлы где то же, не распаковывая их и сравнивая их.
Наше решение состояло в том, чтобы получить md5sum файла прежде, чем сжать его, затем мы сжали файл и переименовали его к md5sum.zip
(.zip или .tar.gz или .rar или .whatever). Тем путем мы знали это, если два файла имели то же имя (без суффикса) они, где идентичный.
нетронутый tar имеет взломанную версию gzip, который всегда приводит к тем же результатам (и другой для bzip2). Выберите вариант алгоритма и метку времени, и Вы хороши для движения.
Взлом в источники с 7 zip. Где это читает дату файла, просто введите код для изменения даты до 01.01.1997 или чего-либо другой - зафиксированный для всех файлов. Скомпилируйте с другим именем и используйте его.