How To Move Large Apps Or Games To Another Drive
Regular readers know that the main drive of my new PC is a 80 Gigabyte capacity Intel Solid State Drive. The hard drive is excellent and works well in combination with the 2 TB hard drive that I use for data storage, and some larger programs that do not require a fast hard drive.
I sometimes run into disk space problems. Take the Steam software for instance, it can only install new games on the same hard drive where all the other games are installed (Update: Valve has updated the software in the meantime to allow the installation of games on other drives).
That's a big problem that resulted in a few solutions being posted on the Internet. Some users have moved Steam and all their games to another drive; Others uninstalled a game to make room for the new one. But the problem is not solely a Steam one. There are games that can only be installed on the c: drive for instance, and some applications have the same restriction.
How To Move Large Apps Or Games To Another Drive
My way of handling space problems on drives is to move the apps or games to another drive without having to reinstall them or lose data. I recently installed Dragon Age which installed itself on the c: drive. I decided to move the game from c:\ to another hard drive with lots of space instead without losing the game's installation status.
The move process itself is easy enough. Just move the files using Windows Explorer, or any other file manager that you may be using, to another hard drive. You can move the folder by pressing shift during the drag and drop operation (if you do not press shift you copy the files).
Most games and applications will not start anymore after they have been moved around.That's because Registry entries may still link to the original location and not the updated one.
The solution to this is to create symbolic hard links. Windows comes with the tool to do just that. Open a command prompt as an administrator. You find the Command Prompt under Accessories in the Windows Start Menu. Right-click the command prompt and select run as administrator.
Update: If you are using Windows 8 or newer, tap on the Windows-key, type cmd.exe, right-click on the result and select "run as administrator".
The command that we are using to create a so called directory junction is mklink. A directory junction basically tells the operating system to create a mirror in another directory that provides access to all files of the selected directory in the mirror directory as if they would be stored in it.
So, in easier terms: all files and folders are accessible in another location, even though they just link to the "real" files and folders on another hard drive.
The files and folders of the mirror directory are however actually only redirected to the destination where they are actually hosted. This essentially means that you can make the game, application or Windows believe that the files and folders are still in their right place even if they are not.
mklink /J "new folder" "folder with the files"
That's the basic command that we will be using. The /J parameter defines the type of symbolic link that we are creating, in this case a directory junction. The new folder is the mirror folder and the "folder with the files" the folder containing the real files that you moved previously.
mklink /J "C:\program files (x86)\Dragon Age\" "e:\games\Dragon Age"
This creates a directory junction so that the files and folders of e:\games\Dragon Age are accessible by the program and Windows under C:\program files (x86)\Dragon Age\ as well (where they have been initially installed to).
C:\Windows\system32>mklink /J "c:\Program Files (x86)\Dragon Age\" "c:\games\Dragon Age\"
Junction created for c:\Program Files (x86)\Dragon Age\ <> c:\games\DragonAge\
The same method can be applied to other applications or games. It is for instance possible to move some Steam games or files to another hard drive to free up space on the one Steam is installed on.
Mklink is available in Windows Vista and Windows 7 (Update: And newer versions of Windows). I'm not sure about Windows XP right now, would be nice if anyone with XP could let me know in the comments. There are programs like Junction from Sysinternals that can create junctions as well in case that is needed.
I don’t have access to an xp machine at the moment so I started up Windows Virtual PCs Windows XP Mode from Microsoft and mklink is an unrecognized command.
Mklink is for Vista and Windows 7.
For XP, try using NTFS Junction Points:
Your MS site reference for XP about “How to create and manipulate NTFS junction points” refers clearly that this article applies to:
* Microsoft Windows 2000 Server
* Microsoft Windows 2000 Advanced Server
* Microsoft Windows 2000 Professional Edition
* Microsoft Windows 2000 Datacenter Server
So, no XP support, or can it nonetheless work?
There is an exellent shell extension for avoiding to have to work with the commandline mklink: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
I use it all the time and it works like a charm!
This is very useful information! I happen to have the same type of problems!
I’m a happy user of LinkMagic (on XP): http://www.rekenwonder.com/linkmagic.htm
This might be of use on XP: http://elsdoerfer.name/=ntfslink
nope, dude, I checked my vanilla Win XP SP3.
The prompt command returns this message:
‘mklink’ is not recognized as an internal or external command, operable program or batch file.
Thanks for your insight, I will check your suggestion about SysInternals Junction, ’cause SH3 and SH4 are taking lots of room with Oblivion…(ahem) on that poor drive C.
Just a question, can we redirect as easily the data located in Documents and Settings?
Thanks once more.
In XP the ‘fsutil’ command should be used instead of ‘mklink’. However I would suggest you use http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html instead. Compatible with every major Windows operating system since and including NT4! Saves you from some syntax headaches too.
Concerning D & S: theoretically YES since hardlinks are transparant to applications. I haven’t tried it though.
Do you know of a way to do so?
I’m trying everything I know (which isn’t much) to transfer my User (Win7x64) folder from C:\ to D:\.
Can anyone help me?
From Junction “Windows 2000 and higher supports directory symbolic links”
Is it possible with this workaround to move this folder?
Thanks in advance!
How does junctioning work with updates? do new files move to the junction folder? How does updating a single file work?
It basically works like a redirection, so updating works like before.
Hey, i just wanted to mention that “symbolic hard links” are two different things (To Wikipedia at least).
As you can see here:
“Symbolic links are different from hard links. Hard links do not link paths on different volumes or file systems, whereas symbolic links may point to any file or directory irrespective of the volumes on which the link and target reside. Hard links always refer to an existing file, whereas symbolic links may contain an arbitrary path that does not point to anything.”
:D Just got confused when reading it here. Hope it helps.
Quick Question: Do I need to move the files first, before using the junction command? or can I move them afterwards?
hey guys, im interested in doing this bug i cant seem to get it to work.
im trying to move games in my c:\program files(x86) folder to another hard drive but i cant seem to get it
can someone do like a step by step example?
Do i move the folder before i do mklink? or?
Paul, try Steam Mover, it is a program that you can use for that purpose. https://www.ghacks.net/2010/09/03/steam-mover-automated-tool-to-move-games-and-apps-to-other-drives/
Thanks a lot !
So i did evrything and it seems to have worked. is it ok if i delete the files that i copied from the old drive?
This seems like an old conversation but ill ask anyway. If i do this while i have the original hdd as (D:) and i copy paste the files over to (E:) than remove the D drive so E becomes D will it still work?