0

I tried the solution proposed by Sayed Metwaly (How to Sync OneDrive Business /Office 365 on Linux?) but I got the following error message:

=== Job === OneDrive_Sync: 'office365://xxxxxxxxx-my.sharepoint.com/personal/xxxxxx_oasis_xxxxxxxxx_be/Documents' <-> 'file:///home/xxxxxx/Onedrive'
142724 L: No file system for office365://xxxxxxxxx-my.sharepoint.com/personal/xxxxxx_oasis_xxxxxxxxx_be/Documents
File system at office365://xxxxxxxxx-my.sharepoint.com/personal/xxxxxx_oasis_xxxxxxxxx_be/Documents has been replaced by New OneDrive V2 API.
Click Browse button to Re-Browse to your OneDrive sync folder, as New OneDrive requires browser-based authentication (OAuth2)

Any idea on what I did wrong? Thanks

3 Answers3

2

Here's what I did to get it working very quickly:

  1. 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.
  2. Used the "Export" option in the Windows version of Goodsync to create a jobs.tix file.
  3. Created a ~/.goodsync folder on the Linux machine.
  4. Placed the jobs.tix file in that folder.
  5. This is a NEW STEP I had to discover on my own: RENAMED the jobs.tix file to jobs-groups-options.tix — this allowed the entire configuration to be used.
  6. Applied the following changes, as shown by the diff output from the original Windows jobs.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"
    
    Where tomh-a is my Windows username, od was my local Windows OneDrive folder, tomh is my Linux username, and onedrive is my local Linux OneDrive folder. You can safely ignore the TimeStamp lines, I just left them in for completeness. Note that this diff 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.
  7. 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 to Conn = <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 :)
  8. 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.

Tom H
  • 21
  • 2
1

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.

ChD
  • 11
  • Thanks a lot. It seems to work also for me. I guess the synchonization is not automatic and that we have to run manually gsync sync xxxx to synchronize files. – Bernard Nysten Oct 09 '16 at 08:25
  • Would it be possible for you to post a sanitized version of your jobs.tix file? It might be possible for other people to edit it to suit their needs, instead of going via Windows. – Nate Eldredge Oct 11 '16 at 16:33
  • @NateEldredge: The jobs.tix file is structured like what @Joop posted in his answer, but most of the fields are encrypted. I can't tell which encryption is used, and for security reasons I also can't post my file here. In any case, the encryption makes it hard for other users to edit the file manually, and I would still recommend them to go via Windows as I have outlined above. – ChD Nov 25 '16 at 15:23
0
<Job>
 2 Name = "name"
 3 Side1 = <SideOptions>
 4 Dir = <Connect>
 5     Url = "file:///home/username/path/bla"
 6 </Connect>
 7 </SideOptions>
 8 Side2 = <SideOptions>
 9 Dir = <Connect>
10     Url = "msdrive://<compname>-my.sharepoint.com/_api/v2.0/me"
11     UserID = "myid+somegarbleinhex"
12     AccessToken = "blaaaah"
13     RefreshToken = "blaaahA"
14 </Connect>
15   UseTmpDestFile = No
16 </SideOptions>
17 Direction = 0
   ExcludeHidden = Yes
   ExcludeSystem = Yes
   DetectMovesAndRenames = Yes
   LinksOption = 1
   </Job>
Joop
  • 1
  • 1
    Can you please give more context to this answer and explain it? Right now, all this answer does is give the OP something to copy and paste without understanding it. Please edit your answer to include an explanation and more context/steps. – TheOdd Nov 18 '16 at 15:48