Сравнить 2 большие папки

#powershell

#powershell

Вопрос:

Я знаю, что есть много вопросов, связанных с этим, но в моем вопросе есть повороты.

Итак, я сравниваю 2 папки с огромным объемом данных (более 20 ГБ и может доходить до 40 ГБ), одна из которых — OneDrive.

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

Я нашел сообщение, которое выполняет оба (ссылка ниже), но интересно, есть ли более простой способ выполнить это без загрузки или помещения его в переменную?

Заранее благодарю всех!

https://serverfault.com/questions/532065/how-do-i-diff-two-folders-in-windows-powershell/637776?newreg=b08ad3ef3c8e45d48ac0d17676a28df4

Комментарии:

1. я бы взглянул на robocopy . вы можете указать ему, чтобы он показывал только то, что он будет делать… и сохраните это в журнале. кроме того, это намного быстрее, чем Get-ChildItem . [ усмешка ]

2. Согласен, и я попробовал это, и это работает. Но мне нужно сделать это в PowerShell

3. вы можете вызвать RC из PoSh… и может преобразовать результирующий файл журнала в коллекцию объектов с небольшим разбором текста. [ усмешка ] кроме того, вы можете использовать различные параметры RC, чтобы исключить ненужные вещи… например, данные верхнего и нижнего колонтитулов. обычно я просто получаю полные имена файлов, но вы можете настроить все по мере необходимости для большинства свойств.

4. Спасибо Ли. Звучит больше работы, чем то, что может сделать PowerShell (при условии …). Я уверен, что это простое решение, просто нуждается в некоторой настройке с новой логикой.

5. добро пожаловать! [ ухмылка ] Шикарно не слишком хорошо с большими коллекциями файлов. вы можете использовать конвейер для снижения использования оперативной памяти — он обрабатывает данные по одному за раз. однако я подозреваю, что RC, вероятно, будет вашим лучшим выбором для больших наборов файлов… или специальное служебное приложение. ///// желаю вам удачи! [ усмешка ]

Ответ №1:

вы можете попробовать с помощью compare-object, но перед этим вам нужно получить все дочерние элементы следующим образом:

 $gci1 = Get-ChildItem -Recurse "Path to Folder"
$gci2 = Get-ChildItem -Recurse "Path to Folder"

Compare-Object $gci1 $gci2