All posts
BLOG & NOTES

百度网盘与 OneDrive 的文件同步与备份实践

1 我为什么重新整理云盘方案

随着个人项目、学习资料和归档文件越来越多,我希望找到一种能够兼顾多设备访问、自动同步和本地空间管理的方案。

之前我主要使用 OneDrive,也尝试过让不同网盘共同管理同一个文件夹。但实际使用后发现,云盘同步、Git 版本管理和独立备份是三件不同的事,不能简单地把多个同步客户端叠在一起。

这次整理的重点,是让每种工具承担清晰的职责。

2 OneDrive 与百度网盘的使用体验

我分别从日常同步和文件管理的角度使用两种服务。

OneDrive 更适合与 Windows 系统和 Microsoft 生态配合。按需文件功能可以释放本地空间,需要时再下载云端内容。

百度网盘同步空间 则提供了另一种管理体验:可以把指定文件夹纳入同步空间,也可以按需释放本地文件。对我来说,它在手机端上传文件、电脑端统一归档的流程比较顺手。

还有一个实际差异是,我发现百度网盘可以存取 Live Photo 格式的照片,这也是我在整理个人照片时比较看重的一点。

两者并不是非此即彼。是否保留某个服务,应取决于设备生态、文件类型、同步体验和实际成本,而不是只看容量。

3 同步空间与 Git 仓库的边界

我曾把 Git 管理的个人归档仓库放进百度网盘同步空间。2026 年 10 月 12 日执行:

git pull --tags origin main

遇到过:

fatal: bad object refs/heads/main.baiduyun.uploading.cfg
error: https://github.com/FuTseYi/Personal_Folders.git did not send all necessary objects

关闭同步客户端、重新同步后,问题没有再次出现。这说明普通文件同步工具与 Git 同时操作仓库内部文件时,可能发生时序冲突。

因此,我不再把“云盘同步了整个目录”理解为“Git 仓库就获得了可靠备份”。更稳妥的做法是:

  • 活跃开发仓库由 Git 和远端仓库管理
  • 网盘同步普通文件和已经完成的归档内容
  • 需要备份 Git 历史时,额外保存 Git bundle 或镜像
  • 避免多个设备同时打开并修改同一个同步目录中的仓库

4 释放本地空间时需要注意什么

百度网盘和 OneDrive 的按需文件机制,能够减少本地磁盘占用,但它们并不意味着文件永远不会重新下载。

我还观察到一个情况:手机端向百度网盘同步空间上传文件后,即使电脑端此前选择了释放空间,Git 访问相关目录时仍可能触发文件重新下载。等本地 Git 操作完成并推送到远端后,再释放空间就比较顺畅。

这提醒我,释放空间与本地程序访问之间存在关联。只要某个应用需要读取文件,云盘客户端就可能重新将它下载到本地。

日常管理时可以:

  1. 将真正需要频繁编辑的目录保留在本地
  2. 将不常访问的归档文件设置为按需下载或释放空间
  3. Git 操作完成后再执行空间释放
  4. 不要在同步进行时强制移动、删除或批量改写文件

5 同步不等于备份

这是整套方案里最重要的原则。

同步的目标是让多个位置保持一致;备份的目标是在误删、覆盖、损坏或账号异常后,仍然能够恢复到过去的状态。

如果一个文件被误删,同步服务可能会把删除操作传播到其他设备。因此,单纯拥有两个同步客户端,并不等于拥有两份独立备份。

对于重要资料,我会额外保留独立的历史副本:

  • 普通文件:按时间创建归档快照
  • Git 项目:使用 Git bundle 或镜像保留完整提交历史
  • 应用数据:按应用支持的格式导出
  • 关键资料:定期检查备份是否能够实际恢复

例如,仓库快照可以采用带日期的命名方式,避免新备份覆盖旧版本。备份是否可靠,最终要通过恢复测试确认,而不是只看上传是否成功。

6 最终分工

经过这轮实践,我更倾向于使用下面的结构:

GitHub
  └─ 代码版本、提交历史、协作

百度网盘同步空间
  └─ 日常文件、多设备同步、照片归档

OneDrive
  └─ Windows / Microsoft 生态中的文件同步

独立备份
  └─ 历史快照、Git bundle、重要应用数据

不需要让每个文件夹同时被所有服务接管。按内容和用途选择一个主要同步位置,再为重要数据建立独立备份,整体会更清晰。

7 总结

云盘的价值不只是容量,而是让文件在不同设备之间更容易流动。但同步工具、版本控制和备份工具有不同的目标,混用时必须划清边界。

同步负责可访问,Git 负责可追溯,备份负责可恢复。 把这三件事分开设计,才能让个人文件归档长期稳定地运行。