使用硬链接移动 Windows 用户文件夹

使用硬链接移动 Windows 用户文件夹

我目前正在尝试将大容量文件夹从 SSD 移动到 HDD(我的Users文件夹和ProgramData文件夹)。我正在遵循简短指南使用目录连接有效地完成此操作。但是,这对我来说不起作用。这正是我最近尝试时所做的:

  1. 在硬盘上找到旧的用户文件夹——我想保留的文件夹
  2. 在 SSD 上安装 Windows 8
  3. 重新启动进入恢复控制台 – SSD=C: HDD=D:
  4. 复制ProgramData到硬盘robocopy /copyall /mir /xj C:\ProgramData D:\ProgramData
  5. 重新启动进入 Ubuntu 以复制所有失败的内容并删除ProgramData
  6. 重新启动进入恢复控制台
  7. 重命名C:\UsersC:\Users.old
  8. 建立连接
    1. mklink /J C:\Users D:\Users
    2. mklink /J C:\ProgramData D:\ProgramData
  9. 检查dir一切是否正常。

但是,当我重新启动时,登录启动画面是纯蓝色的,我没有用户个人资料图片,登录后,我得到:

用户配置文件服务登录失败。无法加载用户配置文件

因此,我ProgramData再次返回,并重新命名Users.old为“用户”。这一次,启动画面显示正确,但我仍然遇到用户配置文件问题。

我做错了什么?

答案1

经过多次尝试,我终于找到了答案。这个方法不起作用的原因是,在将数据从 SSD 复制到 HDD 时,所有现有连接都会被删除。这是因为需要使用/xj标志来robocopy阻止它陷入无限循环。

为了解决这个问题,可以使用 PowerShell 脚本可以必须做到以下几点:

  1. 使用以下方法将数据从 SSD 复制到 HDD:robocopy /copyall /mir /xj C:\Stuff D:\Stuff
  2. 对于中的每个连接点C:\Stuff,在中创建一个相同的连接点D:\Stuff
  3. 对于 中的每个连接点C:\Stuff,将 ACL 权限复制到 中的相应连接点D:\Stuff
  4. C:\Stuff注意with的属性attrib C:\Stuff
  5. 删除或重命名C:\Stuff
  6. 创建连接mklink /J C:\Stuff D:\Stuff
  7. 将的属性应用C:\Stuff到连接点attrib /L C:\Stuff +H +I(例如 - ProgramData 使用这些属性)

希望这将使一切从移动C:\Stuff到,D:\Stuff同时保持所有连接点、权限和属性。

但有一条“捷径”,我选择了这条路。我没有费心去做这些,而是​​做了一个完整的驱动器映像并将C:其恢复到D:(显然要确保没有文件D:会被覆盖)。有免费软件可以做到这一点,例如Macrium Reflect 免费驱动器映像 XML

然后,我将所需的任何额外数据复制到 中D:,并继续跳至上述步骤 4。之后,我删除了驱动器上不需要的所有 Windows 文件(我必须使用我的 Ubuntu USB 棒来完成这一部分)。

一切正常!

相关内容