Я использовал 7zip для вычисления хэша папки (с подпапками), что можно сделать с двумя вариантами, включая или не включая имена файлов.

Однако в Linux-версии 7zip функция хеширования не реализована. Я пробовал разные методы для дублирования результата, но ни один из этих методов не дал бы тот же результат на Linux и Windows.

Примеры результатов:

« 7za.exe h -scrcsha1 myfolder » на окнах дает:

SHA1   for data:              D54D3168B16BFEE600C3A77E848A2A1C1DBCBC59
SHA1   for data and names:    BCE55085200581AD1774CC25AE065DE7DE60077D

тогда как на linux у меня есть:

find . -type f -exec sha1sum "$PWD"/{} \; | sha1sum
ee44137f2462bdfea87ec824dab514f288ae3e6c  -

или же

find . -type f | xargs sha1sum | sha1sum
8f971311a28bcdee36fab0ce87a892564622db40  -

Поэтому я не могу использовать результат с одной платформы на другую.

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

1 ответ1

1

Простое выполнение следующей команды не обязательно будет работать:

find . -type f | xargs sha512sum | sha512sum

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

Вместо этого попробуйте выполнить следующее:

find . -type f | sort | xargs sha512sum | sha512sum

Не стесняйтесь менять sha512sum на другой - например, md5sum / sha1sum / sha256sum зависимости от ваших требований.

Обратите внимание, что это может стать медленным для больших деревьев каталогов, и в этом случае вы можете предпочесть более сложный скрипт для обхода иерархии.


Пример:

$ find . -type f | xargs sha512sum | sha512sum
097e56f6b751c1da15ce5b9dce853ffcc89e06e9cbe10a8dc0894dedb834d40dc4228c65e48bd53f136dd6a7700b0ab07e8e12e7100956db00b0d1b9ef0b9956  -

Это включает в себя имена файлов и содержимое в конечном хэше, но не включает метаданные - время изменения, разрешения и т.д.


Обратите внимание, что вы можете использовать эти утилиты в Windows, используя « Подсистема Windows для Linux ». Я только что установил его, что было безболезненным опытом, и которое также помогло мне осознать проблему, find с порядком поиска в отчете.

Также следите за тем, как обрабатываются символические ссылки в вашем дереве в Linux и Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .