Я пытаюсь внедрить USMT в среду моей компании для всех наших будущих миграций. Во время тестирования у меня есть хранилище резервных копий, которое отказывается восстанавливать, что дает очень странные результаты.
При извлечении небольшого файла MIG (600 МБ) это обычно занимает всего пару минут - это продолжается и продолжается около 20-30 минут. Файл loadstate.log становится огромным, заполняется этим, просто повторяется (более миллиона строк в журнале):
2013-06-21 18:08:23, Info [0x080000] pCompareLnkContent: Compressed=C:, Mapped=C:, DestExpanded=C:\
2013-06-21 18:08:23, Info [0x080000] Creating stream copy in C:\Users\SYPKENJM\AppData\Local\Temp\tmp848C.tmp\Temp\tmp5290.tmp (362 bytes)
2013-06-21 18:08:23, Info [0x080000] pCompareLnkContent: Links C:\Users\SYPKENJM\AppData\Local\Temp\tmp848C.tmp\Temp\tmp5290.tmp and C:\Users\SYPKENJM\AppData\Roaming\Microsoft\Windows\Recent\Local (C) (667).lnk differ in target paths: 'C:\' vs. 'C:\'
2013-06-21 18:08:23, Info [0x080000] pCompareLnkContent: Compressed=C:, Mapped=C:, DestExpanded=C:\
2013-06-21 18:08:23, Info [0x080000] Creating stream copy in C:\Users\SYPKENJM\AppData\Local\Temp\tmp848C.tmp\Temp\tmp5291.tmp (362 bytes)
2013-06-21 18:08:23, Info [0x080000] pCompareLnkContent: Links C:\Users\SYPKENJM\AppData\Local\Temp\tmp848C.tmp\Temp\tmp5291.tmp and C:\Users\SYPKENJM\AppData\Roaming\Microsoft\Windows\Recent\Local (C) (668).lnk differ in target paths: 'C:\' vs. 'C:\'
2013-06-21 18:08:23, Info [0x080000] pCompareLnkContent: Compressed=C:, Mapped=C:, DestExpanded=C:\
2013-06-21 18:08:23, Info [0x080000] Creating stream copy in C:\Users\SYPKENJM\AppData\Local\Temp\tmp848C.tmp\Temp\tmp5292.tmp (362 bytes)
2013-06-21 18:08:23, Info [0x080000] pCompareLnkContent: Links C:\Users\SYPKENJM\AppData\Local\Temp\tmp848C.tmp\Temp\tmp5292.tmp and C:\Users\SYPKENJM\AppData\Roaming\Microsoft\Windows\Recent\Local (C) (669).lnk differ in target paths: 'C:\' vs. 'C:\'
2013-06-21 18:08:23, Info [0x080000] pCompareLnkContent: Compressed=C:, Mapped=C:, DestExpanded=C:\
Я вижу там несколько скрытых файлов lnk, которые соответствуют этим записям журнала (например, «Local (C) 581.lnk», но я не знаю, откуда они взялись. Образ этой машины был создан только для этого теста USMT, поэтому Похоже, что эти файлы создал USMT.log loadstate.log занимает около 180 МБ, затем он, наконец, перемещается.
Я запустил usmtutils / extract, и он очень быстро извлекается - и эти файлы Local (C) ###. Lnk находятся там, в папке appdata / microsoft / windows / latest. Это просто ссылка, указывающая на диск C: \.
У кого-нибудь есть идеи, шаги по устранению неполадок или аналогичный опыт?
Думаю, у меня есть объяснение этому странному поведению.
Похоже, что функция «игнорировать нерелевантные ссылки» не работает на ссылках, указывающих на корень диска. Например, у меня в папке «Недавние» был файл LNK, который указывал на диск «F: \». Сравнение запустило сравнение и вернуло ложный потому что «F: \» не было равно «F:».
Каждый раз, когда я запускал загрузочное состояние для восстановления, он добавлял копию рассматриваемой ссылки на диск C: \ (или диск F: \). (в дополнение ко всем LNK, которые были скопированы с последнего запуска scanstate.
На машине, на которой я тестирую, я неоднократно проводил множество тестов, выполняя резервное копирование и восстановление. 1 LNK превратился в (2 + 1) = 3, который превратился в (6 + 1) = 7, который превратился в (14 + 1) = 15, 31, 63, 127, 255, 511 ... и так далее. Процесс сравнения LNK, очевидно, должен сравнивать каждый lnk похож на любой другой lnk, так что это O (n²) итераций (на основе вывода журнала). Это очень быстро вышло из-под контроля. Один журнал loadstate вырос до 150 МБ на уровне журнала 5, а следующий - до 300 МБ, прежде чем я в конечном итоге отменил процесс.