Windows – 2-Way sync doesn’t work in OneDrive when using symbolic links or junctions

onedrivesymbolic-linkwindows 10

I’ve already read a lot about the problems with Symbolic Links and Windows 10 on internet, but not about the phenomenon I run into now. So here it is…

My goal is to 2-way sync a folder (‘My Music’), located on a separate data partition of my SSD-drive, to the OneDrive cloud via a symbol link. It all works fine… except the 2-way syncing. It stays a 1-way street somehow. 🙁

Both the data partition and the Windows system partition have the NTFS file system. The data partition has the letter (X:). I have an existing OneDrive account with no files or folders on it yet.

As far as I understand now, creating a junction is the way to go, although creating a symbolic link could work too in this case. The procedure I followed is this:

  1. Opened my OneDrive account online.
  2. Set up OneDrive on my computer.
  3. Keep the standard location of my OneDrive on the system partition: C:\Users\<my user name>\OneDrive.
  4. Opened the command prompt as administrator.
  5. Created the junction with this command: mklink /J “C:\Users\<my user name>\OneDrive\My Music” “X:\My Music”
  6. The ‘My Music’ link appears as a folder underneath the OneDrive icon in Windows Explorer.
  7. Tested if the link with the folder ‘My Music’ on my data-partition actually works. And it does perfectly.
  8. Over to OneDrive online. The ‘My Music’ folder also appeared in my OneDrive online.
  9. Uploaded a random file from my computer into the ‘My Music’ folder to test the syncing.
  10. Uploaded file appears in my OneDrive online.
  11. Back to Windows Explorer on my computer. The uploaded file has appeared in the ‘My Music’ folder on the data partition via the created link.

So far so good. Anything I upload to my OneDrive online appears perfectly in my data partition folder. But the problem is that the 2-way sync fails. If I change anything in the ‘My Music’ folder on the data partition, that change does appear in the same OneDrive folder that is linked (obviously), but that’s where it stops: no syncing to OneDrive online. How come and what is the solution?

Exactly the same happens if I use not a junction, but a symbolic link: mklink /D “C:\Users\<my user name>\OneDrive\My Music” “X:\My Music”

And my 2nd question is: how is it possible that the result is exactly the other way around, when I change the procedure and first create the junction (or symbolic link) and then set up OneDrive on my computer? So in that case syncing a file to OneDrive online via the created link works fine, but if I change anything in the ‘My Music’ folder in OneDrive online, that change does not appear in the folder on my data partition. Again, it’s only 1 way.

I just don’t get it. Does anyone have the answers please? Thanks in advance!

Best Answer

Per this thread in Microsoft's forums, it looks like OneDrive was getting notified of file change events from aliased (junction/symlink) paths around 5/31/2017 (see reply marked best response), but on 1/17/2018 somebody reported that they were broken, and the author of the reply marked best response seemed to confirm that.

The later suggestion to "use hard links" doesn't work, as I believe there are no "directory hard links" in NTFS.

Sad to say, I think this is broken right now.

There are a couple mentions of workarounds in that thread -- OneDriveBully to manually trigger a (full?) sync of OneDrive periodically, and generic folder sync utilities to 2-way-sync the two directories (incurring 2x disk space and probably lots of headaches when it has to, ie. handle conflicts). I don't like any of them.

Related Question