If you’re like me, you’re a gamer who plays a lot of different games regularly. In many ways I still prefer to have a physical disc for my games because I don’t trust the cloud completely. Believing that cloud services or your Internet connection will always be available is unrealistic.
But Steam has made it really difficult for me to stick to my disc-based preference because of their reliability as a platform and because some of their prices are ridiculously cheap. I currently have about 100 games in my Steam collection, most of which are independent titles; but I do have a few titles that are big names – Mass Effect 1 and 2, Borderlands, Portal and Portal 2, and Team Fortress 2, just to name a few.
The problem is that my Windows and Steam drive is a 128 GB solid-state disk, which doesn’t allow me to have a lot of titles installed, particularly those that I mentioned above, even though I do go back and forth between games regularly. Because I need far more than 128 GB for everything that I do on my PC, I also have a 640 GB drive as my D: drive. (Note that I refuse to use the inane GiB term.)
Unfortunately, I have reached a point where I cannot install any more of the larger Steam titles without risking the longevity of my SSD. The problem is that Steam doesn’t allow you to install games to separate drives – a problem that I consider to be ridiculously short-sighted. For example, I’ve beaten Portal 2 but I want to eventually go back and play through again if only to listen to Cave Johnson’s hilarious statements again. Because I’m not actively playing it now, I’d rather move that to my 640 GB hard drive than uninstall it just to have to fight with space issues when I decide to play through it again. I also don’t want to undergo another multi-GB download.
The problem is that when it comes to Steam games you can’t move the game directory and use a shortcut to the new location because technically a shortcut, unlike a UNIX symbolic link, is actually a .lnk file. So, if you move the portal 2 directory then create a shortcut, you’re actually creating a file called portal 2.lnk, not a shorcut called portal 2. If you double-click on the game in your Steam client, you will get an error that the game is missing. Eventually, when Steam sees that portal 2 is missing, it downloads the entire game again back to a new portal 2 directory.
Thanks to the Steam forums, I’ve found a method to move individual Steam games from one drive to another in a way that still makes Steam think that the game is exactly where it should be. (Note that these instructions are specifically for Windows 7; however, they should work in Vista.) In this example, I’m using the Windows 7 64-bit convention of the current location as C:\Program Files (x86)\Steam\steamapps\common where each game is installed in its own directory under common; and I’m using a destination of D:\SteamApps.
- Shut down Steam completely. (In the icon in your system tray, right click the Steam icon and click Exit, or from within the client click on the Steam menu and click Exit.)
- Move the game folder from its current location to its new location (using cut/paste or whichever method you prefer).
- Open up a command prompt as the administrator. (Start → All Programs → Accessories → Right click on Command Prompt → Run As Administrator)
- Use the mklink command to create a directory junction link from the old location to the new location. (Yes, I know, it’s the command line. There’s more to Windows than a GUI, you know.) Don’t forget to use the /J argument and make sure that each directory path is enclosed in double quotes or else the link will fail. Note also that it will create a new link wherever your old directory was, which is why you need to move the game directory.
mklink /J "old directory" "new directory"
Below is the mklink program in action.
mklink /J "C:\Program Files (x86)\Steam\steamapps\common\portal 2" "D:\SteamApps\portal 2" Junction created for C:\Program Files (x86)\Steam\steamapps\common\portal 2 <<===>> D:\SteamApps\portal 2
That’s it! When you start up Steam again, it should be oblivious to the fact that you moved the game directory.
(If you are still using Windows XP, you’ll need to download the Windows Server 2003 Resource Kit Tools and use the linkd.exe command unstead of mklink.)
I’ve already moved two games this way, totaling over 20 GB in recovered SSD space, and Steam appears to be oblivious to the fact that the games aren’t really where it expects them to be.
If you’re in the same boat as me and you are running out of space on an SSD, I don’t necessarily recommend moving games that you play frequently unless your destination drive is really fast. Regardless of what type of drive you use for Steam, if you need a way to move a few games to another drive, this is a good way to help with managing your Steam library without struggling with constantly installing and uninstalling your games.
[Addendum - Since this article was originally posted, Steam added a new function to let you install a program to a SteamLibrary directory on another drive right from the installer. In order to keep a better track of where your games are installed, it might be easier to use the "delete local data" function of the Steam client and then reinstall the program into the SteamLibrary directory. -- JB]
Worked perfectly! Thanks heaps for the info
Sad when the users are more clever than the developers. Amazing when folks like you figure this out. Spectacular when they decide to post how to’s for the rest of us.
Thank you very much for this procedure. I, like you, have the same SSD problem.
I appreciate your discovery and sharing. Thanks again.
You can also make a batch file.
So that you can edit it in notepad and not have to do all that typing (and can copy/paste the directories).
Each line would be:
mklink /j “SOURCE” “DESTINATION”
Since the folder structure (“C:\Program Files (x86)\Steam\steamapps\common\EachFolderName”) isn’t going to change each time, it means you only would need to replace EachFolderName with the portal 2, fallout 3, (varies based on the games you have), etc.
Then save the notepad/text file as “steam.bat” and save it where you can find it (I made a folder called 1 (c:\1\) in the C drive.
CD.. will move you back a directory
and cd 1 when in c:
Without trying to give a crash course in MSDos directory navigation, if it makes sense what I say (notepad/batch file) then go for it, if it doesn’t stick with the original posters method (I don’t want to steal his thunder). But I wanted to move 18 folders and typing it over and over again just didn’t sound like good times.
Good luck.
True. Another option, for those of us more of the UNIX persuasion, might be to create a real shell script with Cygwin, seeing as how it can call Windows binaries as easily as its own. I’d be more comfortable doing that than trying to remember how to use batch commands.
(Of course, if mklink is built into the administrative command shell and is not its own executable, then a batch file would be the only way.)
EDIT: Nope. This has to be done with the command console via Run As Administrator.
C:\Users\***>mklink /J “D:\Program Files (x86)\Steam\steamapps\common\dota 2
beta” “C:\Program Files (x86)\SteamApps\dota 2 beta”
The syntax of the command is incorrect.
any ideas?
So, you have Steam installed on your D: drive and you’re trying to move DOTA2 to your C:\ drive, correct? The syntax itself looks fine to me, unless that’s actually a carriage-return/enter after “dota 2″ on the first line. I can’t tell for sure from here if that’s a result of the word-wrap or not.
One trick that might help to troubleshoot is to expand the command Window to be significantly wider than 80 characters to eliminate word wrapping and use Tab completion to make sure that you are getting the right path. (Tab completion is when pressing Tab will fill in the rest of the field for you when you only give it the first few characters.)
it was the quotation marks (“) for me, just replace the ones here, if you copy+pasted, with your own.
Noted. I’ve edited the double-quotes to be the regular kind. That should solve the problem. Thanks for pointing that out.
There is a free utility that does this for you.
http://www.traynier.com/software/steammover
Just used it to move CS:GO from my normal HD to my SSD, working perfectly!
Mr. John Berger,
Thanks for the useful guide! I had all of my Steam games on a HDD before and after upgrading to a SSD. The games that I played weren’t affected by being on a slower hard drive.
However, CS:GO map loading seemed to push my old HDD to the limit. After using your guide, I can finally use the Steam Community in-game while loading maps in CS:GO. Nice!
I’ll be using this for other things as well.
Thanks,
Phos