双向同步还是单向备份?OneDrive Client for Linux五大运行模式详解
【免费下载链接】onedriveOneDrive Client for Linux项目地址: https://gitcode.com/gh_mirrors/onedri/onedrive
OneDrive Client for Linux 是一款开源免费的 Microsoft OneDrive 同步客户端,支持双向同步、单向备份、持续监控、只下载、演练预览等多种运行模式。很多新手第一次安装后都会困惑:我该让本地和云端互相覆盖,还是只把本地文件备份到云端?选错模式轻则白跑一遍,重则误删数据。本文用通俗语言带你快速看懂五大运行模式,并给出"怎么选"的实用建议,5 分钟做出不后悔的决定。
🧭 五大运行模式速览
| # | 模式 | 启动方式 | 数据流向 | 典型场景 |
|---|---|---|---|---|
| 1 | 双向同步 | onedrive --sync | 本地 ⇄ 云端 | 日常办公、多设备一致 |
| 2 | 持续监控 | onedrive --monitor | 自动双向 | 桌面/服务器长期在线 |
| 3 | 只下载 | onedrive --sync --download-only | 云端 → 本地 | 一次性归档云端数据 |
| 4 | 只上传 | onedrive --sync --upload-only | 本地 → 云端 | 单向备份到云端 |
| 5 | 演练模式 | onedrive --sync --dry-run | 不动任何文件 | 配置变更前的安全预演 |
模式 1~4 决定"数据往哪个方向流动",模式 5 则是给你的保险丝——真正动手前先彩排一遍。
🔄 模式一:双向同步(默认模式)
这是 OneDrive 同步客户端最经典的工作方式:本地新增/修改的文件自动上传,云端在其他设备上产生的变化自动下载,最终两边保持一致。
启动方式:
onedrive --sync # 或简写 onedrive -s有两个值得新手了解的关键机制:
- 谁说了算?默认情况下,客户端把云端数据视为权威来源(source of truth);如果你习惯在本地改文件,可设置
local_first = "true"或加--local-first参数,让本地成为权威来源,详见 docs/application-config-options.md。 - 冲突不丢数据:当云端和本地内容冲突且无法安全合并时,客户端会把本地版本保存为
safeBackup备份文件,而不是直接覆盖。 - 删除也会"回收":开启
use_recycle_bin后,云端删除导致本地需要删除的文件会被移入系统回收站,而不是直接消失。
下图展示了默认(云端优先)的一次完整同步流程:先校验认证,再拉取云端状态、处理本地差异、扫描本地新文件并上传,最后做一次在线校准:
如果启用了--local-first,顺序会调整为"先处理本地变化、后对齐云端",本地优先的同步流程如下:
📡 模式二:Monitor 持续监控模式
--sync只跑一次就结束,而--monitor(简写-m)会让客户端常驻后台,持续保持同步。它适合配合 systemd 服务长期运行,是桌面用户和服务器用户的推荐姿势。
启动方式:
onedrive --monitor一次同步周期可能由以下任意信号触发:
- 客户端启动/重启后的初始同步;
- 到达配置的
monitor_interval空闲间隔; - 本地文件系统事件(inotify 实时感知);
- 云端通过 WebSocket 或 Webhook 推送的变更信号。
在桌面环境下,同步完成后文件管理器里会直接出现~/OneDrive目录,日常像用本地文件夹一样使用即可:
小贴士:--monitor运行时会在~/.config/onedrive/monitor-status.json写一份机器可读的 JSON 状态文档,方便脚本和服务监控"是否就绪、上次周期是否成功",无需额外 API 开销。更多细节见 docs/usage.md。
⬇️ 模式三:只下载(--download-only)
只从 OneDrive 往本地拉数据,不会把本地变化上传,适合"把云端内容完整归档到本地"的一次性操作。
onedrive --sync --download-only两个行为细节要注意:
- v2.5.x 及以后,云端已删除的文件默认保留在本地,整体效果相当于给云端数据做一份"只读快照"。
- 如果你希望本地也跟随云端删除(本地与云端严格一致),才需要追加参数:
onedrive --sync --download-only --cleanup-local-files⬆️ 模式四:只上传(--upload-only)
只做本地 → 云端方向的单向同步,不关心云端已有的内容,是很多用户实现"单向备份到 OneDrive"的选择。
onedrive --sync --upload-only⚠️新手必看的重要规则:--upload-only会同步本地的删除操作——本地删掉的文件,云端也会被删。如果你的目标是"云端只增不删"的纯备份,请加一个参数:
onedrive --sync --upload-only --no-remote-delete加上--no-remote-delete后,云端就成为一个只增不减的单向归档:文件只会新增或更新,永远不会因本地误删而消失,这正是标题所说的"单向备份"。
🧪 模式五:Dry-Run 演练模式
真正"零风险"的模式:完整走一遍同步逻辑,展示将会发生什么,但不下载、不上传、不删除任何文件。
onedrive --sync --verbose --dry-run它有两个最佳使用场景:
- 修改了
sync_list、skip_file等过滤规则后,先预演确认影响范围; - 客户端要求执行
--resync(重建同步状态库)之前,官方建议先用--dry-run确认所有计划动作,避免意外覆盖本地文件。
如果只想回答"我现在到底同步没有?",还有只读的状态检查命令onedrive --display-sync-status,它不会消耗任何待处理变更,可以反复运行,详见 docs/usage.md。
🎯 如何快速选择合适的运行模式?
| 你的情况 | 推荐模式 |
|---|---|
| 笔记本/多台设备都要看到一样的文件 | 双向同步 + Monitor |
| 本地改得最多,不想被云端覆盖 | 双向同步 +local_first = "true" |
| 服务器/NAS 长期无人值守 | --monitor挂 systemd 服务 |
| 想把云端资料一次性搬到本地保存 | --download-only(默认保留本地文件) |
| 只想把本地资料备份上云,且云端永不删除 | --upload-only --no-remote-delete |
| 改完配置不放心,想先看一眼后果 | --dry-run |
一句话总结:要"一致"选双向同步,要"备份"选单向上传,动手前先 dry-run 彩排。
❓ 常见问题 FAQ
Q1:这个客户端可以当备份软件用吗?它的定位是"同步"而非"备份"。官方文档明确建议,重要的sync_dir还应配合 rsync 快照、borg、restic、Timeshift 等真正的备份工具双重保护。
Q2:--resync会删掉本地文件吗?它不会删除"本地独有"的文件(这些会被当作新内容上传),风险来自本地同步状态库被清空后可能发生的冲突覆盖。好在冲突时safeBackup机制会保留本地字节,且你可以先--dry-run预演。
Q3:Monitor 模式会一直高 CPU 吗?正常周期内它会做内存整理与堆最小化,内存会收敛到稳定的工作水位而非持续增长,可在 docs/usage.md 查看内存行为说明。
📚 延伸阅读
- 完整用法手册:docs/usage.md(运行模式总览)与 docs/usage.md(单向同步详解)
- 全部配置项说明(
monitor_interval、local_first、use_recycle_bin等):docs/application-config-options.md - 客户端架构与同步引擎原理:docs/client-architecture.md
- 端到端测试如何覆盖各种模式:docs/end_to_end_testing.md
- 项目介绍与特性总览:readme.md
💡 记住核心口诀:双向求一致,单向做备份,演练保平安,监控省心的。选对运行模式,OneDrive 才能真正成为你 Linux 工作流里可靠的"第二块硬盘"。
【免费下载链接】onedriveOneDrive Client for Linux项目地址: https://gitcode.com/gh_mirrors/onedri/onedrive
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考