How to Sync OneDrive Business (Office 365) on Linux (Ubuntu)?
Solution 1:
Here's what I did to get it working very quickly:
- Used a Windows machine to set up a sync using the Windows version of Goodsync. This includes setting up the (browser-based) authorization with Office 365.
- Used the "Export" option in the Windows version of Goodsync to create a
jobs.tix
file. - Created a
~/.goodsync
folder on the Linux machine. - Placed the
jobs.tix
file in that folder. - This is a NEW STEP I had to discover on my own: RENAMED the
jobs.tix
file tojobs-groups-options.tix
— this allowed the entire configuration to be used. - Applied the following changes, as shown by the
diff
output from the original Windowsjobs.tix
file:$ diff ~/Downloads/jobs.tix ~/.goodsync/jobs-groups-options.tix 51c51 < Url = "file://" ––– > Url = "file:///home/tomh/onedrive" 54c54 < Url = "file:///~tomh-a/od" ––– > Url = "file:///home/tomh/onedrive" 68c68 < } Bookmarks = { } TimeStamp = 013061702176 ––– > } Bookmarks = { } TimeStamp = 013061705503 84c84 < Url = "file:///~tomh-a/od" ––– > Url = "file:///home/tomh/onedrive" 87c87 < AcctUrl = "file:///~tomh-a/od" ––– > AcctUrl = "file:///home/tomh/onedrive"
Wheretomh-a
is my Windows username,od
was my local Windows OneDrive folder,tomh
is my Linux username, andonedrive
is my local Linux OneDrive folder. You can safely ignore theTimeStamp
lines, I just left them in for completeness. Note that thisdiff
output was not sanitized or changed in any way except to replace certain characters with the corresponding HTML entities. So yes, you all now know my Windows and Linux user names and OneDrive sync folders. Can't see how that compromises my security, and it improves the chances that it is typo-free. - One obscure thing I changed that make it work: You'll find these two lines in the file:
Side2 = <SideOptions> Conn = <Connect>
I changed the second line as follows:Side2 = <SideOptions> Dir = <Connect>
and it immediately started working.
Disclaimer: After I ran the sync (next step) Goodsync changed the line back toConn = <Connect>
. So I could be wrong. Maybe I could have left it as-was (and is again). But that's the last change I made before it started working. It's entirely possible that I changed something else at the same time that made it work. But at least making that change didn't break it for me :) - Run the sync with
gsync sync "Onedrive"
substituting "Onedrive" with whatever appears in the lines that look like:Jobs = { <Job> Name = "Onedrive"
It is my belief that the API v2.0 requirement of using OAuth has made it impossible to simply take someone else's jobs-groups-options.tix
file and make it work for yourself simply using Linux. That is, until they decide to make a GUI version for Linux — or at least add the OAuth code that launches your browser to establish the authorization.
Solution 2:
I came across the same problem today. What worked for me in the end, was to download and use GoodSync GUI on a Windows machine and port the final configuration over to my Linux machine.
On Windows, I configured my Business OneDrive following these instructions. Next, I used the GUI's "export selected jobs" function (right click the job name) to export a jobs.tix
file. This is the configuration file you need.
On Ubuntu, paste the jobs.tix
file into ~/.goodsync/
and edit it in a text editor to update the client-side url to the appropriate folder in your local file system. Finally, just run gsync sync [jobname]
to synchronize all files. This worked for me both upstream and downstream.