Seafile 云盘备份到本地磁盘:从 SeaDrive+rsync 踩坑到年度快照方案
背景
一直以来我用 SeaDrive + rsync 的组合来备份 Seafile 云盘数据到本地磁盘。但用久了发现这个方案有一个根本性问题,值得写出来给同样在用 Seafile 的朋友避坑。
问题:SeaDrive 是虚拟盘,rsync 备份的可能只是"影子"
SeaDrive 的工作模式是 on-demand(按需下载):本地默认只保存"影子文件"(占位符),真正的文件内容要在被访问时才会从服务器拉取下来。
这意味着直接对 SeaDrive 挂载目录跑 rsync,会遇到两难:
- 要么触发大量按需下载:rsync 遍历目录时把所有影子文件的实际内容都拉取一遍,速度慢、流量大,尤其是移动网络或跨境访问服务器时体验很差;
- 要么根本没备份到完整内容:如果不触发下载,rsync 复制到的可能只是占位符,不是真实文件,备份形同虚设。
这也是我决定换方案的直接原因。
候选方案对比
| 方案 | 说明 | 适用场景 |
|---|---|---|
| seaf-cli | 官方命令行同步客户端,本地是真实文件,非虚拟盘 | 命令行环境、树莓派等 headless 设备 |
| seafile-client(同步模式) | 官方桌面客户端,选"同步"而非"虚拟盘" | 有图形界面的常驻电脑 |
| rclone + WebDAV | 利用 Seafile 的 WebDAV 接口做同步/备份 | 想要多目标备份(同时备份到 S3、OneDrive 等)的场景 |
| 强制落盘后 rsync | 先遍历触发 SeaDrive 全量下载,再 rsync | 不推荐,效率低、逻辑 tricky |
最终选择基于官方 seaf-cli,因为它本身就是同步工具,不需要再叠加 rsync 这一层,依赖轻,适合脚本化和定时任务。
我的场景:另一台电脑 + 移动硬盘,每年备份一次
具体需求是:
- 不影响 Seafile 服务器端的数据;
- 用一台额外的电脑,接上移动硬盘做本地留档;
- 备份频率很低——一年一次。
关键坑:官方客户端默认是双向同步
无论是 seafile-client 桌面版还是 seaf-cli,默认都是双向同步。这意味着如果备份电脑上误删了文件,或者移动硬盘故障导致文件丢失/损坏,这个"删除"或"损坏"状态会被同步推回服务器,造成反向污染——这是这套方案里最容易被忽视、也最危险的一点。
[Read More]