外观
同步 OneDrive
完成后,NAS 上的一个共享文件夹和你的 Microsoft OneDrive 保持同步:后台服务每隔几分钟检查一次,把变化双向或单向地同步过去。
适合谁
- 想在 NAS 上留一份 OneDrive 内容的本地副本。
- 想把 NAS 上某个目录的内容上传到 OneDrive,作为多一个位置的存放。
- 想用 OneDrive 在手机、电脑和 NAS 之间中转文件。
不适合:
- 当作备份。 双向同步会把误删、勒索软件加密的结果同步到另一端。备份的思路见 备份策略。
- 想要加密的、有版本的云端备份,用 restic 或 BorgBackup;想把各种网盘当磁盘挂载,用 远程挂载。
同步目录里的文件会被客户端增删改,「全部」模式下删除会双向传播
- 影响范围:同步目录里的所有文件。在 复制模式 为 全部(Full)时,两边的删除、覆盖都会同步给对方。NAS 上误删或被加密的文件,几分钟后 OneDrive 上也会变化;OneDrive 的回收站和版本历史由 Microsoft 的规则决定,保留期不由你控制。
- 前置条件:用一个专用的空共享文件夹做同步目录,不要选已经存了重要数据的目录;NAS 上有独立于 OneDrive 的备份;磁盘空间不小于你要同步的 OneDrive 内容大小,首次同步会下载全部内容;先读懂下面三种模式的删除行为。
- 怎么回退:取消勾选 已启动(Enabled),保存并应用,同步服务就停止。同步中误删了文件:先停服务,再去 OneDrive 网页的回收站恢复,或从独立备份找回。
插件信息
| 项 | 内容 |
|---|---|
| 包名 | openmediavault-onedrive |
| 来源 | 官方插件,不需要 omv-extras |
| OMV 8 状态 | 截至 2026-10-18 的官方软件源为 8.0.1-1 |
| 菜单位置 | 服务 → OneDrive(Services → OneDrive) |
| 依赖 | Debian 的 onedrive(2.5.2 及以上,社区开发的 OneDrive Client for Linux)和 sudo。安装时创建系统用户 onedrive,没有登录 shell,属于 users 组 |
在 系统 → 插件(System → Plugins)里安装。
配置与使用
1. 建同步目录,启用服务
- 在
存储器 → 共享文件夹(Storage → Shared Folders)里建一个专用的共享文件夹,例如onedrive。 服务 → OneDrive,填写:
| 字段 | 默认值 | 说明 |
|---|---|---|
| 已启动(Enabled) | 关 | |
| 共享文件夹(Shared folder) | 无 | 同步目录,启用时必填 |
| 用户(User) | onedrive | 同步下来的文件和目录归这个用户所有 |
| 复制模式(Replication mode) | 全部 | 见下一节 |
| 监测间隔(Monitor interval) | 5 分钟 | 两次同步之间的等待时间,可选 5、10、15、30、60 分钟,6、12、24 小时 |
| 速率限制(Rate limit) | 禁用 | 128 KiB/s 到 100 MiB/s,家里带宽要留给别的设备时用 |
| 本地优先(Local first) | 关 | 只在「全部」模式可用:先把本地状态上传,再下载线上变化 |
| 清理本地文件(Clean up local files) | 关 | 只在「只下载」模式可用 |
| 不要远程删除(No remote delete) | 关 | 只在「只上传」模式可用 |
| 跳过点文件(Skip dotfiles) | 关 | 不同步以点开头的文件和目录 |
| 扩展选项(Extra options) | 空 | 原样追加到客户端的配置文件,语法见 OneDrive 客户端文档 |
- 保存,点黄色提示条上的应用。
2. 三种复制模式
| 模式 | 方向 | 删除怎么处理 |
|---|---|---|
| 全部(Full) | 双向 | NAS 上删,OneDrive 也删;OneDrive 上删,NAS 也删 |
| 只下载(Download only) | OneDrive → NAS,本地改动不上传 | 默认 OneDrive 上删了,NAS 上保留,相当于一份归档;勾选 清理本地文件 才同步删除 |
| 只上传(Upload only) | NAS → OneDrive,不下载 | NAS 上删了,OneDrive 上也会删;勾选 不要远程删除 后 OneDrive 上只增不删 |
想把 OneDrive 内容归档到 NAS,选 只下载;想把 NAS 的内容单向放到 OneDrive 又不怕本地误删牵连云端,选 只上传 并勾选 不要远程删除。
3. 授权(必须做)
启用并应用之后,要在命令行里给应用授权,界面上的提示也是这么写的。在 OMV 的 shell(SSH 或本机控制台,root)里运行:
sh
# 在 OMV 的 shell 里执行(root)
omv-onedrive-auth在没有图形桌面的环境里,客户端使用手动粘贴的方式:
- 终端会打印一个
https://login.microsoftonline.com/...开头的网址。在任意电脑的浏览器里打开它,登录 Microsoft 账号并同意授权。 - 浏览器会跳到一个空白页,或显示一条提示,这是正常的。把地址栏里完整的网址(以
https://login.microsoftonline.com/common/oauth2/nativeclient?code=开头)复制下来,粘贴回终端。 - 看到
successfully authorised就完成了。脚本会先停掉同步服务,授权后再启动。
遇到 AADSTS70000,是授权码已经失效,授权码一次性且很快过期,重新运行 omv-onedrive-auth,并换一个干净的浏览器窗口,关掉改写网址的隐私扩展。工作或学校账号可能还需要组织管理员批准这个应用。
4. 第一次同步之前先试运行
大量数据的首次同步不容易中途停下。可以先试运行,它不下载、不上传、不删除,只显示将要做什么:
sh
# 在 OMV 的 shell 里执行(root)。omv-onedrive 会暂停同步服务,结束后恢复
omv-onedrive --sync --verbose --dry-run输出和你的预期一致,再让后台服务正常运行。
检查结果
- 在 OMV 的 shell(root)里只读确认:
sh
# 在 OMV 的 shell 里执行(root)
systemctl status onedrive@onedrive # 应为 active (running)
journalctl -u onedrive@onedrive -n 50 --no-pager
omv-onedrive --display-config # 显示客户端实际使用的配置,会暂停同步服务,运行完自动恢复- 在
诊断 → 系统日志(Diagnostics → System Logs)里选OneDrive类型,也能看到同步日志。 - 往同步目录里放一个小文本文件,等一个监测间隔,在 onedrive.com 上确认它出现;再在网页上新建一个文件,确认它回到 NAS 上。
- 在测试用的文件上试一次删除,确认删除行为和你选的模式一致,再把真正重要的数据放进去。
备份与维护
- 文件属主和权限:同步下来的文件属于
onedrive用户,默认目录权限 750、文件权限 640(来自插件生成的客户端配置,环境变量OMV_ONEDRIVE_SYNCDIRPERMISSIONS和OMV_ONEDRIVE_SYNCFILEPERMISSIONS可以调整,用法见 环境变量)。这意味着通过 SMB 访问时,其他用户默认读不到或只能读;要在 NAS 上修改这些文件,需要自己调整权限。一般更稳妥的做法是只在 OneDrive 一侧修改,NAS 上只读使用。 - 授权信息在哪里:OMV 用
--confdir /var/cache/onedrive/运行客户端,授权令牌和同步状态库按客户端的惯例保存在这个目录下。备份系统盘时它会被带上,当作机密对待;重新授权用omv-onedrive-auth。 - 客户端配置文件由 Salt 生成,不要手改,要加参数用界面上的 扩展选项。
- 更换账号或同步目录,等于换了一套同步关系,客户端要重建同步状态,上游文档里叫
--resync。先停用服务,备份同步目录,再读 客户端文档 里相关一节。 - 冲突文件:本地和 OneDrive 两边都改了同一个文件时,客户端会把本地版本保留为
文件名-主机名-safeBackup-0001.扩展名这样的文件(上游 2.5.3 起的命名),再应用线上版本。看到它们先别删,对比后再决定留哪个。 - 卸载插件:会清除配置数据库里的设置,不会删除同步目录里的文件。
常见问题
授权时提示 AADSTS70000。 见上面第 3 步。
服务不停重启,日志里提示需要授权。 还没有运行 omv-onedrive-auth,或授权已经失效,重新授权。
NAS 上删了文件,OneDrive 上也没了。 「全部」和「只上传」模式下这是预期行为,去 OneDrive 回收站恢复。想避免,换成「只上传」并勾选 不要远程删除。
OneDrive 上删了,NAS 上还在。 「只下载」模式的默认行为。需要同步删除就勾选 清理本地文件。
首次同步占满了磁盘或带宽。 首次会下载全部内容。同步前用 omv-onedrive --display-config 确认设置,用 速率限制 控制带宽;只要同步部分目录,用客户端的 sync_list 功能,见客户端文档。
想同步到别的网盘。 用 远程挂载 的 rclone 类型,或 restic 备份到网盘。
参考资料
- 插件源码:openmediavault-onedrive,官方文档和 wiki 没有这个插件的页面
- 客户端文档:OneDrive Client for Linux 的使用说明,授权、三种同步模式和
safeBackup一节对应本文内容;Debian 软件源里的客户端版本可能比文档旧,以实际安装的为准