Сравнение структуры папок PowerShell - PullRequest
2 голосов
/ 10 января 2020

Я хочу сравнить две большие структуры папок и сравнить текущее состояние структуры папок с известным хорошим историческим состоянием, и мне нужен наиболее эффективный вариант из возможных. Рассматриваемая структура папок представляет собой «развертывание» Autodesk, представляющее собой раздутый беспорядок установщика, с объемом данных более 15 ГБ, более 15 000 файлов и более 2500 папок. И они от 1008 *, казалось бы, безобидные изменения могут сломать их. Однажды столкнулся с тем, что отсутствие файла thumbs.DB привело к сбою всей установки Revit 2018. Итак, я хочу иметь возможность копировать развертывания и сравнивать исходное и целевое объекты, чтобы убедиться, что все скопировано правильно, и сравнить текущее состояние с историческим состоянием, чтобы убедиться, что ничего не изменилось.

Сначала я подумал, что я мог бы Get-ChildItem получить полный список всех папок и имен файлов, затем Get-FileHash, что в качестве первого шага, а затем распределить все пути к файлам в массиве для распределения по нескольким работам, которые Get-FileHash всех файлов, а затем суммируйте все хэши, чтобы получить один ха sh для папки. Затем его можно сравнить с ha sh для другой папки или историческим ha sh, чтобы определить, изменилось ли что-либо. Я показал, что Get-FileHash работает как однопотоковая последовательность в примере развертывания, и это занимает разумную пару минут, поэтому многопоточность и сокращение ее в среднем в 4 раза будет вполне выполнимым. Тем не менее, сравнение двух структур папок похоже на то, что может быть уже реализовано, и гораздо быстрее, уже в Windows. Поэтому, прежде чем я go спустился в эту кроличью нору, я подумал, что лучше всего посмотреть, правильная ли это дыра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...