Существует ли какое-либо программное обеспечение для проверки файлов, которое правильно обрабатывает глубокие пути?

815
Mark Booth

Я искал программное обеспечение, которое будет проверять контрольную сумму и проверять / сравнивать тома NTFS с глубокими путями в Windows, и проваливать проверку на каждом, который я пробовал. Я даже пытался написать свой собственный скрипт на Python и столкнулся с теми же проблемами.

Проблемы начинаются, когда файлы заканчиваются путями, длина которых превышает 256 символов. Это достаточно плохо на основном диске, но как только эти файлы будут сохранены и еще глубже в резервной файловой системе, становится еще хуже. Например, моя программа на Python, ExactFile (предлагается здесь ), md5deep и HashMyFiles, все будет с радостью хэшировать

D:\My Music\CDs\Bach, Johann Sebastian\The Art of Fuge _ Musical Offering (Sir Neville Marriner)\Bach, Johann Sebastian+The Art Of Fuge _ Musical Offering (Sir Neville Marriner, CD 1)+09+Contrapunctus 7, A 4, Per Augmentationem Et Diminutionem.mp3 

поскольку это всего 247 символов, но когда дело доходит до проверки его по резервной копии, ни одна из этих программ не может открыть файл:

W:\WD SmartWare.swstor\XYZZY\Volume.1234567890abcdef1234567890abcdef0123\My Music\CDs\Bach, Johann Sebastian\The Art of Fuge _ Musical Offering (Sir Neville Marriner)\Bach, Johann Sebastian+The Art Of Fuge _ Musical Offering (Sir Neville Marriner, CD 1)+09+Contrapunctus 7, A 4, Per Augmentationem Et Diminutionem.mp3 

так как полный путь теперь составляет 317 символов.

Microsofts fciv даже падает, когда приходится иметь дело с такими длинными путями к файлам.

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

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

Может ли кто-нибудь проверить, есть ли какие-либо инструменты, которые на самом деле поддерживают хеширование, проверку и сравнение хэшей файлов в Windows с длинными путями?

4
Я не знаю никаких инструментов, но я знаю два обходных пути: 1) использовать старую добрую команду `subst` для сокращения путей. Гадкий, но должен работать. 2) Вы можете обойти Windows API, который ограничивает вас до 260 символов, добавив префикс ["\? \"] (Http://superuser.com/questions/471794/is-there-a-successor-to-ntfs) , Если вы найдете инструменты, которые поддерживают это, они должны нормально работать до 32 тыс. Символов. Hennes 10 лет назад 0
Благодаря @Hennes, `subst` на самом деле не является жизнеспособным вариантом, и я попытался исправить" \\? \ "В некоторых из этих программ, и в лучшем случае это не имело никакого значения, а в худшем случае сделало их хэшированием еще меньше файлов. В моей программе на Python ошибки просто изменяются с `[WinError 3] Системе не удается найти указанный путь` на` [WinError 206] Имя файла или расширение слишком длинное`. Но это действительно [такой] вопрос. * 8' ( Mark Booth 10 лет назад 0
Cygwin + find + md5sum + bash glueing должны помочь. Если это не сработает, перейдите к реальному: linux + find + md5sum + bash glueing artistoex 10 лет назад 0
@MarkBooth: у меня есть какой-то старый код на языке Clutzy, который я могу дать вам, который делает контрольные суммы MD5 глубоких путей. Это, вероятно, не подходит как есть для ваших нужд, но может быть адаптировано. Напишите мне, если интересно. Harry Johnston 10 лет назад 0

2 ответа на вопрос

1
Martin

7zip 9.25 alpha может вычислять CRC-32, CRC-64, SHA-256 и SHA-1 и поддерживает длинные пути к файлам.

Я не вижу способа получить 7-zip для расчета контрольных сумм без создания архива. Не могли бы вы привести пример того, что вы имеете в виду? Mark Booth 10 лет назад 0
@MarkBooth: я пробовал 9.30 альфа: `7z h *` или `7z h -mm = sha1 -r *`. Это не создает никакого архива. Надеюсь, я вас не правильно понял, извините за поздний ответ. Martin 10 лет назад 0
По крайней мере, 7z 16.04 использует опцию `-scrc` для установки одной из доступных хеш-функций (` CRC32`, `CRC64`,` SHA1`, `SHA256`). Например, `7z h -scrcSHA1 -r folder> report.txt`. A-IV 7 лет назад 0
0
Martin

Total Commander is capable of handling long file paths (and it even warns about them). It is shareware.

It can create MD5 and SHA1 checksums; it writes the sums into files, all sums into one file or for each file one sum file. I don't know if it can be used in batch files etc. to automatically generate checksums.

Moreover, it can compare directories and complete directory trees including each bit in each file, and I think this feature might be interesting for you.