56

I am trying to create a symbolic link on my win7 64bit machine to redirect the iTunes backup data to another drive. I am pretty sure the syntax is correct but cannot understand how to clear this error. I have tried both commands below which have the same error. I am running in Administrator Command Window. Could there be some corporate group policy preventing me from running this command?

mklink /D "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup" 

or

mklink /J "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup"

Error

Cannot create a file when that file already exists.

ChiliYago
  • 5,005
  • 3
  • 24
  • 22
  • which one is the original directory? – Akram Berkawy May 01 '13 at 20:55
  • the original directory is C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup – ChiliYago May 01 '13 at 21:39
  • Does the folder you're linking to on the E drive exist? Does a folder of the same name as the link exist on the C drive? Is the E drive formatted in NTFS? – Harry Johnston May 03 '13 at 05:36
  • 1
    The syntax is correct, before running this command, perform the following steps. Move all the contents of current mobilesync backup folder to E:\Apple Computer\MobileSync\Backup. Once done, delete the empty backup subfolder from "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync". A Junction can only be created if a subfolder with the same name does not exist at the location. – Karanvir Kang Sep 21 '17 at 12:55

5 Answers5

53

the syntax is incorrect. mklink has the following synatx:

mklink [options] <Link> <Target>

Target is the file/folder that exists, and Link is the created one that links to the target.

so the command should be:

mklink /D "E:\Apple Computer\MobileSync\Backup"  "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup"

See the Microsoft Documentation for mklink usage.

Chiramisu
  • 285
  • 3
  • 10
Akram Berkawy
  • 654
  • 6
  • 3
  • 1
    I have gone through the docs and being so brief you would think it would be no problem to run. However no luck, even reversing the link/target like you suggest results in the same error message. – ChiliYago May 01 '13 at 21:39
  • 2
    then you should check that E:\Apple Computer\MobileSync\Backup folder does not exists – Akram Berkawy May 02 '13 at 09:50
  • 2
    That worked. I noticed that deleting the full path resulted in error: "The system cannot find the path specified." So I restored the path and deleted only the last folder in the path (Backup) and then it worked. – ChiliYago May 03 '13 at 21:27
  • 2
    This is not the correct answer. This creates a simlink, which does not redirect iTunes to another drive. It does the exact opposite - it directs another drive to the iTunes backup folder. – Vaiden Mar 30 '17 at 15:04
25

The simplest way is to delete the Backup folder in the original Apple Computer folder on the C:\ drive, but leave the MobileSync folder be. This is because you're trying to fake the existence of the Backup folder (so it must not exist already), but you also need its parents to exist.

Then, if we run the command:

mklink /J "%AppData%\Apple Computer\MobileSync\Backup" "E:\iTunes Backups"

Windows will hence create a hard link shortcut Backup on the C:\ drive.

Mew
  • 113
  • 6
Khanh.tq
  • 251
  • 3
  • 2
4

I had the same issue with the "file already exist error", until I used the "%AppData%':

mklink /J "%APPDATA%\Apple Computer\MobileSync\Backup" "E:\iTune Backups"

Junction created for C:\Users\Me\AppData\Roaming\Apple Computer\MobileSync\Backup <<===>> E:\iTune Backups

Note: Make sure you use straight quotes, otherwise you get a syntax command error.

Io-oI
  • 7,588
  • 3
  • 12
  • 41
Franco
  • 41
  • 1
  • I like this simple method making sure the source and target folders are not present before creating the junction. Creating the junction creates the source folder, but not the target folder. So I had to manually create the target folder and then all is functioning as expected. – timoto May 13 '16 at 23:43
  • This fixed it for me but would be nice to have an explanation as to why the %AppData% fixes it. – Aureis Oct 10 '16 at 00:49
3

I just wanted to add that the error you mentioned in your comment above System cannot find the path specified appears to happen when you are symbolically linking at a folder sub-level which doesn't exist at the link's original source.

Meaning you can't link

"c:\program files (x86)\some folder1\some folder2\"

to target

"d:\programs\some folder1\some folder2\"

It will not work unless at least

"c:\program files (x86)\some folder1"

exists as part of the link source. You would have to either link

"c:\program files (x86)\some folder1"

to

"g:\programs\some folder1" 

or you would have to create at least an empty folder at

"c:\program files (x86)\some folder1"

and then create the link

"c:\program files (x86)\some folder1\some folder2" 

to

"g:\programs\some folder1\some folder2"
Kevin Panko
  • 7,346
  • 22
  • 44
  • 53
Kace36
  • 131
  • 1
  • This seems like a bug on Microsoft's part, but this answer is actually correct. When you link `C:\foo` to `E:\` for instance, `E:\foo` must exist to cd into `C:\foo`; however, when you *do* cd, you're placed into `E:\` -- **not** `E:\foo`. Thanks for pointing this out, I would have never figured it out. – Qix - MONICA WAS MISTREATED Aug 12 '14 at 17:42
0

Ransomware Protection can also cause this when you have "Controlled Folder Access" enabled.

  1. Press the Windows Key (or click the Start Menu)
  2. Start typing "Ransomware"
  3. Open "Ransomware Protection"
  4. Click "Block History"
  5. Click to expand the most recent item (assuming you've just got the error)
  6. Click "Yes" on the UAC (User Account Control) dialog that pops up
  7. Confirm the app (e.g. cmd.exe) and "Protected folder" listed
  8. Click "Actions" and choose "Allow on device"
  9. Re-run the command
Chiramisu
  • 285
  • 3
  • 10