Jun 18

[原]把Windows 7 用户文件夹挪移到非系统分区 晴

linuxing , 15:32 , 其他 » 杂七杂八 , 评论(1) , 引用(0) , 阅读(59373) , Via 本站原创 | |
    Windows 一直默认都是把用户文档等放在系统分区的,为了避免重装系统后丢失数据,通常会把用户文件夹定义到非系统分区(例如D盘)。XP 前的方法很简单,右键属性修改一下即可。Windows 7 等系统引入了库的概念,针对特定的文件夹,如我的文档、我的视频等,也可以通过右键属性中的“位置”来把其重新定位到其他分区的。但是,一来文件夹比较多,二来有些系统文件夹(%AppData%)等,很多的软件都会把用户数据存放在里面,加上系统缓存等导致所需空间越来越大。这通过简单的位置定位是不能解决的。最终的解决办法是,把系统盘的Users 目录(称为 用户特殊文件夹 User Special Folder)整个迁移到非系统分区,这也是本文的目的。
    本来以为这个问题很简单,Google 一下网上有大堆的方法,工作基本是类似的。但实际操作发现,由于存在100M的系统保留分区,按网上资料的操作会导致丢失用户文件夹的问题。经过若干次测试,终于找到较完善的解决办法,特整理出来。

一、工作原理
实际的工作原理很简单,就是把系统分区上默认的Users 目录移动到非系统分区,然后在原地创建一个指向该目录的链接。这与Linux 环境是非常类似的。

需要注意的地方是,用户登录后就会使用Users 目录下的文件。所以,如果在当前用户登录的情况下,移动或删除Users 目录中的文件都会失败的。网上提供的解决办法通常有三个:
1. 在系统安装过程中操作,也就是说,在需要输入首个用户信息时
点击在新窗口中浏览此图片

使用Shift+F10 打开Dos 命令行窗口来操作:
点击在新窗口中浏览此图片

可以参考这里的介绍。

2. 打开系统默认禁用的Administrator 用户,然后注销当前用户,以Administrator 用户登录后操作。
可参考这里,该操作主要是避免当前用户占用文件的问题,但经测试,有些后台服务也会使用Users 目录中的文件,即使重启系统也不一定可以完全避免问题。这还没包括Users/Administrator 用户文件夹本身的情况。所以,这不是一个好办法。

3. 更好的办法是,在系统修复模式下进行操作。
因为修复模式是独立的系统,不依赖磁盘中系统的状态,不会出现用户或服务占用文件的问题。我们下面的操作就以该方法进行。

二、系统保留分区问题
网上不少文档也提到系统修复模式下进行处理的方法,但与这些资料不同的地方是,我的磁盘分区中有个100M的系统保留分区:
点击在新窗口中浏览此图片

这分区是在安装Windows 7 时由安装程序自动创建的,平时在系统环境中也没有分配盘符。所以,在日常的系统中,系统盘是C 盘,非系统盘是D 盘
不过,在系统修复模式下就不同了,该模式下,会自动读取磁盘上的分区,包括系统保留分区。这时,系统保留分区是C 盘,真正的系统盘是D 盘,而E 盘才是非系统盘

正是因为这个差异,如果按网上的资料中进行拷贝或创建链接操作,是会出现用户文件夹(systemprofile\Desktop)丢失的异常问题。

三、实际操作
把问题搞清楚,实际操作并不复杂。

1. 进入系统修复模式
重启机器,并不断按F8 键,让系统打开高级启动选项菜单:
点击在新窗口中浏览此图片

选择“修复计算机”。

2. 根据提示,选择键盘类型,输入登录用户名和密码
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

最后,选择“命令提示符”,打开命令提示符Dos 窗口。
点击在新窗口中浏览此图片

3. 识别当前分区和盘中数据
从dir 命令反馈的结果可看到,系统保留分区为C 盘,系统真正数据在D 盘(Users 目录在D 盘):
点击在新窗口中浏览此图片

4. 拷贝Users 目录及创建链接
接下来,就是通过robocopy 进行拷贝的工作。(robocopy 能确保数据及其相关信息完整拷贝)

robocopy "D:\Users" "E:\Users" /E /COPYALL /XJ

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

然后,先把当前Users 目录改名:

move Users Users_bak

点击在新窗口中浏览此图片

最后,在当前位置创建一个指向真实Users 数据的链接:

mklink /J "D:\Users" "D:\Users"

点击在新窗口中浏览此图片
※注意:这是最关键的一步,看上去很奇怪,也是与其他文档不同的地方。
前面数据拷贝到E 盘,但这里的链接还是指向D 盘。原因就是因为系统保留分区的问题。在系统进入正常引导时(非修复模式),这里的非系统分区E 盘,在没有为系统保留分区分配盘符的情况下,会成为D 盘。所以,我们的链接让应该指向D 盘。

看看操作后的结果:
点击在新窗口中浏览此图片

至此,全部操作完成,退出命令提示符,重启系统即可。

进入系统后,可以看到系统C 盘Users 目录是个链接符:
点击在新窗口中浏览此图片

而真实数据是在非系统D 盘:
点击在新窗口中浏览此图片

四、注意事项
1. 系统保留分区的问题
因为Windows 7 安装方式的不同,在使用光盘安装windows7或在安装过程中执行了删除分区并格式化建立新的分区的时候,才会出现这个100M 的系统保留分区。具体原因可参考:这里

如果你的硬盘没有出现该分区,那么上面在操作中就完全可以按正常的C 盘和D 盘移动数据和创建符号链接即可,反正原理是相同的。

2. 移动数据大小问题
虽然,理论上该方法与Users 目录大小无关。但由于robocopy 速度很慢,所以,建议在系统安装完毕后尽早进行该操作,以避免其他软件安装后带来的大量用户数据文件。还有IE 浏览器缓存数据等,可以先清空缓存后再操作,这对操作时间还是影响很大的。

3. 可能出现的问题
“User Profile Service 服务未能登录,无法加载用户配置文件”
点击在新窗口中浏览此图片

这问题,可能是因为系统盘没有Users 目录,例如忘了用mklink 创建符号链接导致的。这时你将进不了系统的,重新进入修复模式,创建一个对应的Users 目录链接吧。或者参考这里

“位置不可用:C:\Windows\system32\config\systemprofile\Desktop 引用了一个不可用的位置。”
点击在新窗口中浏览此图片

这问题与上面的情况和原因是类似的,只是表现形式不同而已。通常原因是Users 目录的当前用户下缺少了“Desktop”(或“用户”)文件夹,可能没有在修复模式下拷贝文件,导致有部分文件因被占用,后来删除Users 目录后这部分文件丢失引起的。如果文件没有备份,解决起来很麻烦。通常是借用Administrator 重新创建一个同名用户,然后逐一拷贝恢复数据。当然,如果有Users 目录备份,那简单,再拷贝一次即可。
Tags:
tianan
2013/10/15 13:10
真不错,网上所有方法看下,就你的方法靠谱move 和 mklink  是很关键两步,mklink 按网上不成功后,和你的想法一样,没敢试,看到你文章后定心了,一下就成功了
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]