ARTICLE · 1180748
两台电脑持久同步文件,不占我的 iCloud 空间

Mac mini 作为个人服务器,非常适合做文件同步与备份的工作。既做了iCloud的活,又省了订阅费,还有更精细的权限控制。
我的 mbp 在征战几年后,存储空间开始逐渐吃紧了,经常只剩 100GB 不到,我总需要分神清理空间。iCloud+ 虽然好,但毕竟不是免费的,免费版的 5GB 基本就不能存东西用,而且偶尔也有抽风的时候。正好最近我入了一台个人服务器 Mac mini,它就可以作为我和家里 NAS 的桥梁存在了。Syncthing 刚好可以帮我做到无感同步。这篇记录一下这套安排,以及部署记录里留下的几个问题,如果你也有一台 7x24 小时持续运行的本地个人服务器,文件同步是非常适合它做的。
01我的硬件环境
MacBook Pro m2 max Mac mini m5 pro 群晖 DS423+
02一句话结论
同步不是备份。 同步负责「两边一样」,备份负责「删了还在」。把两件事拆开设计,才能管理好。
03我的需求
视频备份
我有2个大文件夹,分别存着视频工程文件和成品 mp4,之前总要不定期导出到 NAS。
但工程文件很细碎,且有特殊符号,必须要压缩成 zip 才能备份。而且备份到 NAS 后,以后万一想拿来改,也需要苦等好一阵子(因为传输速度太慢)。
Obsidian 三端互通
Obsidian 如今是我的主力协作工具,它目前保存在我的 iCloud 上,可以在 mbp 和 iPhone 里分别打开和同步管理。但当 mini 介入后,有时候的文章需要从 mini 更新,而 mini 又没登 Apple 账户,就导致无法和 mbp 与 iPhone 同步。
基于这些需求,我就引入了 Syncthing。
04为什么选 Syncthing
一开始手写了一个 rsync + launchd 的脚本,常规场景能跑,但回头细看有几处补不齐的短板:
大文件传一半断了只能从头来——几 GB 的视频很伤 判断「导出完成没有」只能靠猜(比如 2 分钟内没写入) 失败只写日志,人不会知道 (最重要的)难以管理。脚本运行在后台,我哪天想改,只能再交给大模型重新理解任务
Syncthing 这些都是现成的:分块校验、断点续传、先写临时文件校验后才落地、有网页面板看状态。
MBP 上的 Syncthing 主界面
同一截图局部:4个文件夹与 mini 均显示最新
其他候选也想过:
- iCloud+
:服务器账户要登录 Apple ID,破坏半径太大;「优化存储」还会把文件变成占位符;而且最主要的是要订阅费 - 群晖 Drive
:NAS 变成中转站,多绕一次,而且它是机械硬盘,速度有限 - Resilio
:闭源,没必要
05三种同步形态
Agent-Mini/ 写入 | ||
嵌套文件夹的要点:外层的忽略规则必须排除内层路径,而且两端都要写,否则内层内容会被外层重复同步。
06分层归档:让删除变得没有顾虑
对于视频源文件和成品 mp4,我采用的是如下方案:
mbp 作为主力生产机,日常视频项目都在这里完成。2个大文件夹也是在这里写入和更新的; mini 接入 syncthing 实时读取这2个文件夹,做好日常备份; mini 会定期和 NAS 互联,做好归档工作; Hermes / 微信 / 飞书 / Bark 可以定期接收归档通知和删除建议; mbp 在存储吃紧的时候,或者收到可删除信息通知的时候,就可以删掉已备份过的文件。删除的时候也不怕影响备份。
如此做到无感同步和归档,清理 mbp 的空间时也有迹可循。
具体策略如下:
- 镜像
(实时):Syncthing 从 mbp 自动传到 mini,删除物进回收站保留 30 天 - 本机归档
(每日):一个项目稳定满 7 天没改才归档——7 天内被删的废弃版本,或者正在工作中的项目自然不进存档 - NAS 归档
(每周):只传新增,逐字节校验通过才算数 - 冷备份
(每月):NAS 自己拷到移动硬盘,不经网络
再配一个信号:每周推一份「mini 与 NAS 都有了,MBP 上可放心删除」的清单。有了这个清单,删东西才真的「无感」。
几个细节:
工程文件打成 tar:移动硬盘是 exFAT,存不了符号链接,而 FCPX 引用库外素材靠的正是符号链接;几万个小文件变成一个大文件,对机械盘也友好 靠账本决定传什么,从不扫描目标盘——少读一次盘,就少一次磨损 每月滚动复核:最久没查过的优先,限时完成,逐步覆盖全部
07Obsidian 文档同步
这个就简单很多,Obsidian 自己的根目录保存在 iCloud 上,里面专门新建了一个子文件夹 Agent-Mini/,在 mini 的 Syncthing 中配置的时候,要把根目录配置成只读(仅接收)权限,子文件夹 Agent-Mini/ 可以读写。这样它既可以读取我的所有文章笔记,又能在固定的工作空间更新笔记,并最终在 iCloud 同步到 mbp 和 iPhone 供我实时查看。mini 端的具体配置如下:
.stignore 有效项) | ||
|---|---|---|
~/Obsidian/<笔记库>/ | receiveonly) | /Agent-Mini.obsidian/workspace.json.obsidian/workspace-mobile.json.trash(?d).DS_Store(?d)._*(?d).*.icloud |
~/Obsidian/<笔记库>/Agent-Mini/ | sendreceive) | (?d).DS_Store(?d)._*(?d).*.icloud |
mini 根库:仅接收(Receive Only)
Agent-Mini:发送与接收
外层忽略规则,包含 /Agent-Mini
08值得记住的
- Mac 上的 Syncthing app 自带程序
——别再用 brew services启一个,会抢端口;记得勾「登录时启动」 mbp 和 mini 上的 Syncthing 记得开机自启,mini 作为服务器,也要把该服务纳入日常巡检(当然肯定是脚本自动完成并通知) NAS 的计划任务和 mini 结合,并通过有线方式传输,速度会又快又稳定
09安全边界
服务器账户不登录 Apple ID,不给管理员权限——它会读网页、消息这类不可信内容 关掉 Syncthing 的全局发现和公共中继,只走局域网和 Tailscale,文件不经第三方 NAS 的同步和传输保持约定好的低权限连接,具体任务由 NAS 计划任务和 mini 联动,并通过有线方式传输,速度又快又稳定。
10写在最后
文件同步这种工作非常适合交给本地服务器。如果你有相关需求,或者对本地服务器可以跑的服务有什么心得或者建议,欢迎在下方留言。
像素李的AI笔记
做视频、写代码,也玩音乐。记录把 AI 用进工作和生活的过程。















































































