我正在尝试将 USMT 引入我公司的环境中,以用于我们未来的所有迁移。在做一些测试时,我有一个拒绝恢复的备份存储,结果非常奇怪。
提取小型 MIG 文件 (600MB) 时,通常只需要几分钟即可完成 - 它会持续大约 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 一定是创建了这些文件。loadstate.log 最终大约为 180MB,然后它终于继续了。
我已经运行了 usmtutils /extract,它提取得非常快 - 那些 Local (C) ###.lnk 文件就在那里,在 appdata/microsoft/windows/recent 文件夹中。它只是一个指向 C:\ 驱动器的 lnk。
任何人都有任何见解、故障排除步骤或类似经验?
我相信我对这种奇怪的行为有一个解释。
似乎“忽略无关链接”功能在指向驱动器根目录的链接上中断。例如,我在“最近”文件夹中有一个指向“F:\”驱动器的 LNK 文件。比较运行比较并返回false,因为“F:\”不等于“F:”。
每次我运行 loadstate 进行恢复时,它都会将相关链接的副本添加到 C:\ 驱动器(或 F:\ 驱动器)。(除了它从上次扫描状态运行备份的所有 LNK。
我正在测试的机器上,我做了很多测试,反复备份和恢复。1个LNK变成了(2+1)=3,变成了(6+1)=7,变成了(14+1)=15、31、63、127、255、511……以此类推。LNK 比较过程显然必须将每个相似的 lnk 与其他每个 lnk 进行比较,因此它是 O(n²) 迭代(基于日志的输出)。这很快就失控了。一个 loadstate 日志在日志级别 5 时增长到 150MB,在我最终取消该过程之前,下一个是 300MB。