在 Linux 上挂载 OneDrive — NetDrive 的实验性 Ubuntu 版本

阅读时间 6 分钟 provider-guide onedrive linux
Alex
AlexPrincipal Engineer
使用 NetDrive 的实验性 Linux 版本,将个人 OneDrive 或 OneDrive for Business 挂载为 Ubuntu 上的常规 Linux 挂载点。

某个运行 Ubuntu 的构建服务器需要在每次发布前,从共享的 OneDrive for Business 资料库中读取若干份规格文档,而在无头(headless)机器上安装微软自家的同步客户端并不现实。NetDrive 的 Linux 版本绕开了这个问题:它会在一个常规挂载点上挂载 OneDrive 账户,因此脚本执行 cat /mnt/onedrive/specs/release-notes.md 时,读到的是微软服务器上的实时文件,而不是有人忘了同步的过期本地副本。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

在 Ubuntu 上挂载 OneDrive

NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。

  • 支持 Ubuntu 16.04 及更高版本
  • 个人 OneDrive 与 OneDrive for Business 可同时并存
  • 文件按需流式传输 — 不会预先下载
WindowsmacOS
下载适用于 Linux 的 NetDrive →

免费试用。提供终身与订阅方案。

为何在此场景下挂载点胜过同步文件夹

微软的 OneDrive 同步客户端的设计核心是保持本地镜像最新,这意味着在任何操作发生之前它都要先下载文件——在笔记本电脑上这是合理的取舍,但在一台只需从总容量数十 GB 的共享资料库中读取三个文件的 Linux 构建机上,就显得很别扭了。挂载省去了“先全部下载”这一步。NetDrive 会通过挂载点直接对 OneDrive 账户解析每一次读写,因此脚本的 open() 调用无需事先执行同步,就能拿到当前的远程文件。

NetDrive 自首个版本起就支持 OneDrive,并且将 OneDrive for Business 视为与个人 OneDrive 不同的独立连接类型——它使用微软的现代化 API,拥有自己独立的配置,因此工作账户和个人账户可以同时挂载,互不干扰。

NetDrive 将云存储账户挂载为本地驱动器——这正是 Linux 版本在挂载点上提供的核心交互

在 Ubuntu 上安装 NetDrive

NetDrive 的 Linux 版本不通过 Ubuntu 的软件包仓库分发,因此安装流程走的是 GitHub,而非 apt

  1. 前往 github.com/NetDrive/installer,获取与你的 Ubuntu 版本相匹配的发行版。
  2. 按照安装程序仓库的发行说明操作——必须先安装驱动组件,NetDrive 才能挂载任何内容。
  3. 安装 NetDrive 软件包本身。
  4. 启动 NetDrive。首次运行会加载驱动组件,视系统配置不同,可能会要求 sudo 权限。

最低支持版本为 Ubuntu 16.04。更新以 GitHub 发行版的形式发布,而非 apt upgrade,并且 Linux 版本带有 NetDrive 自家标注的实验性标签——Windows 和 macOS 承担了大部分测试工作,因此这更适合用于构建机或开发机,而非未经充分测试就用于生产环境中的关键任务。

分步操作:在 Ubuntu 上连接 OneDrive

  1. 打开 NetDrive 的 Drive Manager,点击 + Add Drive
  2. 若是个人微软账户,选择 OneDrive;若是 Microsoft 365 工作账户,则选择 OneDrive for Business

连接列表中显示的 NetDrive OneDrive 提供商图标

  1. 通过默认浏览器打开的 OAuth 流程登录。 在没有安装浏览器的无头机器上,可以从登录同一账户的另一台机器完成一次性授权,或使用 X 转发会话。
  2. 设置挂载点——比如 /mnt/onedrive,或任何你有写入权限的空目录。
  3. 点击 Connect。 NetDrive 会向微软完成身份验证,并将账户挂载到该路径。

首次浏览某个文件夹时,目录列表来自 OneDrive API;具体文件在被真正打开之前不会被下载下来。

在终端中验证挂载

在让脚本访问该路径之前,先确认挂载确实成功了,而不要只依赖图形界面:

# Confirm the mount is listed
mount | grep onedrive

# Or just try listing it
ls /mnt/onedrive

确认云端驱动器挂载后成功连接

如果列表返回为空,先回头检查 OAuth 步骤——在无头机器上浏览器流程被中断,是 OneDrive 连接未能完成的最常见原因,比任何挂载点相关的问题都更常见。对于 OneDrive for Business,请特别确认你选择的是 Business 连接类型而非个人 OneDrive;两者使用不同的登录流程,无法用对方账户完成身份验证。

使用 Linux 版本需要留意的事项

  • 发布节奏独立 ——Linux 驱动组件按自己的节奏发布,因此某个在 Windows 或 macOS 上已修复的问题,不会在同一周内自动出现在 Linux 上。
  • 没有 apt 集成 ——安装与更新都来自 GitHub 发行版,而非 Ubuntu 的默认软件仓库。
  • Windows 与 macOS 才是经过充分验证的目标平台 ——NetDrive 官方说明将 Linux 版本视为实验性质。用作每天读取几次 OneDrive 的 CI 运行器或个人开发机是合理的用法;若要用于无人值守的生产流水线,在依赖它之前值得先充分测试。

小结

在 Ubuntu 上挂载 OneDrive,能让无头或桌面版 Linux 机器获得与 NetDrive 在 Windows 和 macOS 上提供的相同挂载点访问方式,安装程序托管在 GitHub 上而非通过 apt。关于同一提供商在测试更充分的平台上的使用方法,参见在 Windows 上挂载 OneDrive;关于 Linux 版本上的另一种连接类型,参见在 Linux 上挂载 Google Drive;关于更全面的 Linux 使用情况,参见Ubuntu Linux 上的 NetDrive

— Alex, NetDrive