Windows has this great functionality that lets you move parts of your user profile to another drive.
Crap, because it only moves the documents and not stuff like Application Data where most of my data is. Crap. And you know what? A lot of applications does not recognize that the documents folder has moved. Dubble crap.
How to really move your user profile
If you're not comfortable working in the command prompt - don't try this. You will screw up your computer completely. The trick is not to leave it to Windows for this low level stuff. Instead you should use a feature within NTFS - directory junction. Consider why you want to do this. I have a small SSD as my primary hard drive that I run the system on. This was a great decision performance wise. My computer feels very fast because it runs on an SSD. The problem is that 80Gb is not a lot for both system files and user profile. That is why I have a slower, but much larger 1Tb, secondary hard drive (Western Digital Green Caviar) where I want to store my user profile. I've postponed this action for far too long and now I have no space left on my primary system drive. A small side note on running SSD as your system drive: it's fast but dangerous. Your SSD will fail, sooner or later, and much more often than a mechanical hard drive. That is the price for running a super performant system - you will fail and when you do - make sure that you can restore the system on a new hard drive with just a few clicks. Make sure that is a price you can pay. (continuous automatic backups - Windows Home Server or Synology) Before you try this you should read other people experiences, because every situation is unique and this story alone will not help you.
My story, how I did it
These instructions worked for me. If they completely screw up your file system, I take no responsibility. That is why your first step should be
- Make a complete backup of your file system with some image tool. I recommend Norton Ghost. I have myself a daily image backup of my whole computer through Windows Home Server. That will work too. Copy files to a backup drive will not help you if your file system is shredded to pieces by your failed attempts to create directory junctions. Consider yourself warned! (also, you don't really have a backup until you've tried to restore it)
- I've read a lot of problems with people trying to move their whole C:\Users directory. Don't do that! It is much easier to just move your profile, so limit the risk and go for that. Move several profiles if you have to.
- Your profile contains directory junctions already. For example, your [Profile]\Documents\My Music points to [Profile]\Music. I've not found a way to move these, so they will have to be recreated at the target location. Get a listing of all your current junctions and print it out (on real paper - you will thank me later)
dir C:\Users\[profile] /al /s
- Restart your computer with the windows 7 install cd/dvd. Choose to repair an existing windows installation and choose command prompt as an option. Notice that your first hard drive is not neccessarily C: in here. For me it was E: and my secondary hard drive was D:. I will name these [source drive] and [target drive] from here on.
- Use robocopy to copy the profile from one drive to another. You will read on the internet that you may just create a new user in windows, login as that and move your other user profile with that user. Don't do that! You will screw up user permissions and sometimes not get all hidden files and folders. Here's the command that worked well for me. (you may have to create target folder first)
robocopy /MIR /XJ /B /R:1 /W1 "[source drive]:\Users\[profile] " "[target drive]:\Users\[profile]"
- Copying the profile took me 1,5 hours. The result of copy should not give you any failures. If it did, abort right now and find out why before you continue.

- Now that have a copy of your user profile on the target drive you need to recreate those junctions that did not copy over. If you run
dir "[target drive]:\Users\[profile]" /al /syou will notice that you don't have any junctions in the target. Damn! Lucky you that you have that printout of what it looked like before.mklink /J "[target drive]:\Users\[profile]\Documents\My Music" "[target drive]:\Users\[profile]\Music" mklink /J "[target drive]:\Users\[profile]\Documents\My Pictures" "[target drive]:\Users\[profile]\Pictures" mklink /J "[target drive]:\Users\[profile]\Documents\My Videos" "[target drive]:\Users\[profile]\Videos"
... and so on - Cool, now you can remove your old profile. Say what? Yes! Just do it. You don't need it anymore.
rmdir /S /Q "[source drive]:\Users\[profile]"
- Replace that old user profile with a junction from [source drive] to [target drive] like this.
mklink /J "[source drive]:\Users\[profile]" "[target drive]:\Users\[profile"
Verify bydir "[source drive]:\Users\[profile]"
You should see the files that is now on [target drive].
Reboot and mission accomplished.


1 Comment
Mikael Lundin said
David Rose sent me these comments that could be of use to anyone trying this out.
Used your instructions to move my account from my SSD boot drive to a larger conventional drive. It worked great but a few minor notes.
First the robocopy command line lists one of the parameters as /W1. It should be /W:1.
Second, it is unnecessary to write down the existing junction points in the source directory before rebooting into the repair command line since they will still be there in the source directory until you execute the rmdir to eliminate it. Actually you can rename the source directory after executing robocopy (which preserves the junction points in it) and you can use this copy to repair the profile so you can reboot and log on to it by by re-entering repair command line mode, removing the new junction point and renaming the saved directory back to its original setting if no other option presents itself. This directory can then be removed after rebooting confirms that the process was successful.
And finally, but surely most importantly, if the the drive letters in repair mode do not match the drive letters when you boot the system (on my system boot C: was repair H: and boot D: was repair I:) if you specify the repair drive letter for the target in the mklink path (which is required to successfully test the final dir command) the junction will fail when you boot the system. It is imperative that you have access to a different administrator account that you can log on to so you can correct this problem after rebooting because access to the account you moved will be impossible until you do. This can be achieved by removing the junction created in repair mode and recreating it using the boot value for the target drive..
Still, thanks for the succinct and useful procedure. Nothing else I found on the web compares to it