在Ubuntu Linux命令行上挂载OneDrive

对于某些要求,我需要挂载OneDrive而不是通过onedrive-d同步文件。此外,我需要一个命令行解决方案来自动化我的脚本中的某些操作。有人可以帮忙吗?
我尝试使用常规的挂载命令,但失败了。请注意,我不是Linux命令行的专家,请帮忙。
提前感谢。
-- Ninad

1最好的方法是使用onedriver(它有一个图形用户界面)。它非常完美。https://github.com/jstaf/onedriver - Allexj
6个回答

在Ubuntu上挂载OneDrive

本指南遵循RCLONE - Microsoft OneDrive的步骤。

  1. 下载并安装Rclone

sudo apt install rclone

或者下载最新版本。
wget https://downloads.rclone.org/v1.42/rclone-v1.42-linux-amd64.deb
sudo apt install ./rclone-v1.42-linux-amd64.deb

2. 添加一个新的 OneDrive 远程到 Rclone

rclone config
  • 通过输入 n 并按下 Enter 键选择 New remote 选项:

      $ rclone config
      Current remotes:
    
      Name                 Type
      ====                 ====
      mega                 mega
    
      e) Edit existing remote
      n) New remote
      d) Delete remote
      r) Rename remote
      c) Copy remote
      s) Set configuration password
      q) Quit config
      e/n/d/r/c/s/q> n
    
  • 为新的远程输入一个名称,这里使用了 onedrive

      name> onedrive
    
  • 按下 Enter 后,会显示支持的云存储服务列表。您需要通过输入相应的数字(“16”现在是对应的Microsoft OneDrive,但将来可能会更改)来选择 Microsoft OneDrive 选项:

      Type of storage to configure.
      Choose a number from below, or type in your own value
      [snip]
      ... 
      ...
      xx / Microsoft OneDrive
         \ "onedrive"
      ...
      ...
      [snip]
      Storage> onedrive
    
  • 接下来两步,请直接按下 Enter,不需要输入任何信息,因为不需要输入Microsoft App Client ID或Secret:

      Microsoft App Client Id 
      Leave blank normally.
      client_id> 
      Microsoft App Client Secret - leave blank normally.
      client_secret>
    
  • 选择OneDrive帐户类型(输入 b 表示商业版或 p 表示个人版 OneDrive 帐户):

      Remote config
      Choose OneDrive account type?
       * Say b for a OneDrive business account
       * Say p for a personal OneDrive account
      b) Business
      p) Personal
      b/p> p
    
  • 根据您的设置,您将需要输入自动配置或手动配置。对于桌面用户,请键入 y 使用自动配置。如果您正在远程或无头机器上设置,请键入 n(您需要在具有浏览器访问权限的机器上运行 rclone config 并复制/粘贴身份验证令牌):

      Use auto config?
       * Say Y if not sure
       * Say N if you are working on a remote or headless machine
      y) Yes
      n) No
      y/n> y
    
  • 如果您要挂载到本地计算机:默认情况下,您的默认网络浏览器中会打开一个新标签页,询问您是否允许 Rclone 访问您的 OneDrive 帐户。请允许它,然后您可以关闭该标签页。Rclone 在本地计算机上运行一个 Web 服务器(在端口 53682 上),以检索身份验证令牌。如果使用防火墙,则可能需要暂时解除阻止。
    .
    如果设置远程或无头机器:rclone 将提供一个终端命令,您需要在具有 Web 浏览器的机器上执行此命令。此命令将为您提供身份验证密钥,您应将其粘贴到此会话中。有关更多详细信息,请参见 这些说明

  • 现在,您需要检查是否正确并通过键入 y 保存设置:

      [onedrive]
      type = onedrive
      client_id = 
      client_secret = 
     
    
    创建一个新文件夹
    
    
    mkdir ~/OneDrive 
    

    4. 挂载 OneDrive
    rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive
    

    你可以按下 Ctrl + c 来停止和卸载它,关闭 Rclone。
    1. (可选) 在系统启动时挂载 OneDrive

    要在启动时挂载OneDrive,打开“启动应用程序”,然后在“启动应用程序”中点击“添加”。
    点击“添加”后,使用以下设置:
    Name:    Rclone OneDrive Mount
    Command: sh -c "rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive"
    

    还有其他自动挂载OneDrive的方法,比如在您的/etc/fstab文件中添加一行,使用systemd等。


12020/04/28 22:56:44 致命错误:未知标志:--vfs-cache-mode - Tony
--vfs-cache-mode是rclone手册中已知的标志!请在帖子中添加您的命令行和驱动器名称。为了查看您的rclone配置是否正确,请键入“rclone lsd <your drive name>:” - abu_bua
@Tony是正确的。该选项无效且不在当前的手册页中。 - Juan Jimenez
从man rclone(1)(版本v1.50.2)中:限制 如果不使用“--vfs-cache-mode”,rclone只能按顺序写入文件,在读取时只能进行搜索。 这意味着许多应用程序在rclone挂载上的文件上无法正常工作,除非使用--vfs-cache-mode writes--vfs-cache-mode full。有关更多信息,请参阅文件缓存部分。 - abu_bua
这个解决方案对我很有效,提前感谢。唯一的问题是在使用“启动应用程序”重启后,OneDrive不会自动挂载,必须手动挂载。也许我漏掉了什么。 - White Horse
最好的方法是使用onedriver(它有一个图形用户界面)。它非常完美。https://github.com/jstaf/onedriver - Allexj
也许我误解了一些事情。我是否可以以某种方式查看其他用户、群组等与我共享的OneDrive数据?目前我只能在挂载的目录中看到我的私人数据。 - Alfe
我不再使用Windows(已经有3年了),而且这篇帖子也很旧(已经有4年了)。 - abu_bua

对于任何WSL用户来说,这很简单。不需要做任何事情,我就可以访问OneDrive。
/mnt/c/Users/my_user_name/OneDrive/

使用标准的Windows OneDrive和文件系统驱动程序。

请注意,这个答案仅适用于WSL。 - ChanganAuto

据我所知,在任何GNU/Linux发行版中都没有简单的解决办法来挂载OneDrive。
你可以使用Storage Made Easy (SMEStorage)在一个文件夹中挂载多个提供商。它免费支持3个提供商,但它不是开源的。
你还可以使用提供的应用程序或通过WebDAV(Nautilus - 连接到服务器)来挂载它,并使用以下链接中提供的说明:CloudDAV

额外

如果你使用的是xfce4(Manjaro)

创建/home/$(USER)/.onedive.sh并赋予执行权限

#!/bin/sh
sleep 3
rclone --vfs-cache-mode writes mount onedrive: ~/onedrive

sh /home/$(USER)/.onedive.sh添加到启动应用程序



最好的方法是使用onedriver(它有一个图形用户界面)。它非常完美。https://github.com/jstaf/onedriver - Allexj

正如@Allexj在他对问题的评论中提到的那样,还有一个叫做“onedriver”的程序,它将您的OneDrive挂载为网络存储,因此它不会将本地文件与云端同步,而只是在您选择的本地目录中列出您的在线文件,并在您实际需要时下载它们。我通过OpenSUSE Build Service下载了onedriver,它可以为Debian、OpenSUSE、Raspbian和Ubuntu构建软件包,并允许您安装与您系统匹配的软件包。
我测试了一下,感觉很不错,特别是因为我学校的OneDrive有1TB的存储空间(所以我经常用它来在计算机之间传输大文件),而且以前的解决方案需要确保我的笔记本电脑在那段时间内处于离线状态,这样它就不会浪费SSD空间在OneDrive上。
该软件包安装了两个命令,onedriver(用于命令行访问)和onedriver-launcheronedriver的图形用户界面)。