gzip выдаст контрольную сумму каждого файла при заданных параметрах -l и -v, например:
$ echo foo > foo
$ gzip foo
$ gzip -lv foo.gz
method crc date time compressed uncompressed ratio uncompressed_name
defla 7e3265a8 Dec 10 17:37 28 4 150.0% foo
Есть ли какой-нибудь внешний инструмент, с помощью которого я могу получить такую же контрольную сумму?
md5sum
, cksum
и sum
выполняют аналогичную роль, но не дают соответствующий код (гекс 3915528286 - это e962385e).
$ echo foo > foo
$ md5sum foo
d3b07384d113edec49eaa6238ad5ff00 foo
$ cksum foo
3915528286 4 foo
$ sum foo
00106 1
Дополнительные сведения о приложении:
У нас есть файловая система с большим количеством больших файлов, и новые файлы постоянно копируются.Некоторые из входящих файлов соответствуют файлам, уже существующим, и в этом случае мы хотели бы просто жестко связать существующий файл, чтобы сэкономить место на диске.Для разархивированных файлов md5sum поможет нам сделать это сравнение быстро и эффективно.С другой стороны, файлы gzip часто имеют различную сумму md5 для идентичных данных (из-за отметки времени или владельца, что не имеет значения в этом приложении).Я заметил, что gzip предоставит контрольную сумму для внутренних данных, поэтому для двух файлов gzip я могу просто сравнить списки контрольных сумм плюс размеры.
Я также хотел бы поддержать сравнение файла gzip с «обычным» файлом, и в этом случае мне нужна утилита, которая будет генерировать ту же контрольную сумму извне из gzip.Я полагаю, что простое решение - всегда распаковывать простой файл перед сравнением, но это лишние издержки, которых я бы хотел избежать, поскольку наша система в настоящее время ограничена по времени ЦП.