如何在 Linux(Ubuntu)上同步 OneDrive Business(Office 365)?

如何在 Linux(Ubuntu)上同步 OneDrive Business(Office 365)?

我尝试了 Sayed Metwaly 提出的解决方案(如何在 Linux 上同步 OneDrive Business/Office 365?),但我收到以下错误消息:

=== 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)

知道我做错了什么吗?谢谢

答案1

以下是我为使其快速运行所做的事情:

  1. 使用 Windows 计算机通过 Windows 版本的 Goodsync 设置同步。这包括设置与 Office 365 的(基于浏览器的)授权。
  2. 使用 Windows 版本 Goodsync 中的“导出”选项创建文件jobs.tix
  3. ~/.goodsync在 Linux 机器上创建了一个文件夹。
  4. 将文件放在jobs.tix该文件夹中。
  5. 这是我必须自己发现的新步骤:将文件重命名jobs.tixjobs-groups-options.tix— 这允许使用整个配置。
  6. diff应用以下更改,如原始 Windows 文件的输出所示jobs.tix
    $ diff ~/Downloads/jobs.tix ~/.goodsync/jobs-groups-options.tix
    51c51
    < URL = “文件://”
    –––
    > Url =“file:///home/tomh/onedrive”
    54c54
    < URL =“file:///~tomh-a/od”
    –––
    > Url =“file:///home/tomh/onedrive”
    68c68
    < } 书签 = { } 时间戳 = 013061702176
    –––
    > } 书签 = { } 时间戳 = 013061705503
    84c84
    < URL =“file:///~tomh-a/od”
    –––
    > Url =“file:///home/tomh/onedrive”
    87c87
    <AcctUrl =“file:///~tomh-a/od”
    –––
    > AcctUrl =“file:///home/tomh/onedrive”
    
    其中,tomh-a是我的 Windows 用户名,od是我的本地 Windows OneDrive 文件夹,tomh是我的 Linux 用户名,onedrive是我的本地 Linux OneDrive 文件夹。您可以放心地忽略这些TimeStamp行,我只是为了完整性而保留了它们。请注意,此diff输出是未消毒或改变除了用相应的 HTML 实体替换某些字符外,其他任何方式都无法做到。所以是的,你们现在都知道我的 Windows 和 Linux 用户名以及 OneDrive 同步文件夹。看不出这会如何危及我的安全,而且它提高了无拼写错误的可能性。
  7. 我做了一个不太明显的变化来让它工作:你会在文件中找到这两行:
    Side2 = <SideOptions>
    Conn = <连接>
    我把第二行改成如下:
    Side2 = <SideOptions>
    Dir = <连接>
    它立即开始工作。
    免责声明:在我运行同步(下一步)后,Goodsync 将行改回了Conn = <Connect>。所以我可能是错的。也许我可以保持原样(现在也是这样)。但这是我在它开始工作之前做的最后一次改变。完全有可能我同时更改了其他东西,使它工作了。但至少做那个改变没有休息对我来说:)
  8. 运行同步
    gsync 同步“Onedrive”
    将“Onedrive”替换为如下所示的任何内容:
    工作 = { <工作>
    名称 =“Onedrive”

我认为,API v2.0 要求使用 OAuth,因此无法简单地jobs-groups-options.tix使用 Linux 来获取他人的文件并让其为自己工作。除非他们决定为 Linux 制作 GUI 版本 — 或者至少添加启动浏览器以建立授权的 OAuth 代码。

答案2

我今天遇到了同样的问题。最终对我有用的方法是在 Windows 机器上下载并使用 GoodSync GUI,然后将最终配置移植到我的 Linux 机器上。

在 Windows 上,我按照以下步骤配置了我的 Business OneDrive这些说明。接下来,我使用 GUI 的“导出选定的作业”功能(右键单击作业名称)导出一个jobs.tix文件。这是您需要的配置文件。

在 Ubuntu 上,将jobs.tix文件粘贴到~/.goodsync/文本编辑器中并在其中编辑,以将客户端 URL 更新到本地文件系统中的相应文件夹。最后,只需运行gsync sync [jobname]即可同步所有文件。这对我而言上游和下游都有效。

答案3

<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>

相关内容