Mac上可用FreeFileSync+RealTimeSync配合launchd实现定时同步:先配置同步任务并保存为.ffs_batch文件,再用RealTimeSync调用,通过launchd设置每日凌晨3点自动执行,要求移动硬盘提前挂载且路径无中文空格。

Mac上设置定时同步文件到移动硬盘,需绕过系统原生限制,借助第三方工具实现自动、静默、可调度的同步任务,避免手动拖拽遗漏或中断。
用FreeFileSync + RealTimeSync 实现定时同步
这是目前Mac上最稳定、免付费、支持APFS移动硬盘且不依赖云服务的方案。RealTimeSync本身不是独立软件,而是FreeFileSync附带的后台执行器,必须先在FreeFileSync中配置好同步任务,再交由RealTimeSync调用。
第一步:下载并安装FreeFileSync 13.5或更高版本(官网freefilesync.org),安装后打开。
第二步:点击左上角“文件”→“新建同步”,左侧“源文件夹”点击“浏览”,选择你要同步的本地文件夹(例如 ~/Documents/Projects);右侧“目标文件夹”点击“浏览”,选择已连接的移动硬盘上的对应路径(如 /Volumes/MyBackup/Projects)。【目标路径必须指向移动硬盘根目录下的某文件夹,不能选硬盘本身】
第三步:点击右上角齿轮图标→“同步选项”,勾选“镜像”模式(确保目标完全匹配源),取消勾选“删除文件”除非你明确需要双向清理;在“高级”页签中,勾选“跳过已存在的同名文件(按大小和修改时间)”,避免重复拷贝。
第四步:点击工具栏“另存为批处理作业”,保存为 .ffs_batch 文件(例如 Desktop/Projects_Sync.ffs_batch),务必勾选“以最小化运行”和“自动关闭”,否则每次执行都会弹窗干扰。
第五步:打开RealTimeSync(与FreeFileSync同安装包,通常位于 /Applications/FreeFileSync/RealTimeSync.app),将刚保存的 .ffs_batch 文件直接拖入窗口,点击绿色“开始”按钮——此时同步已启动,但仍是手动触发。要让它定时运行,需配合macOS的launchd。
用launchd配置每日凌晨3点自动执行
macOS自带的launchd是唯一可靠、开机即生效、无需第三方守护进程的定时机制。它不依赖用户是否登录,只要Mac开机且硬盘已连接,任务就会执行。
在终端中执行:mkdir -p ~/Library/LaunchAgents
用文本编辑器创建文件:~/Library/LaunchAgents/com.user.projects-sync.plist,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.projects-sync</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/FreeFileSync/RealTimeSync.app/Contents/MacOS/RealTimeSync</string>
<string>/Users/yourname/Desktop/Projects_Sync.ffs_batch</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>3</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/projects-sync.log</string>
<key>StandardErrorPath</key>
<string>/tmp/projects-sync.err</string>
</dict>
</plist>
⚠️ 注意:把 yourname 替换为你Mac的实际用户名;【路径中不能含中文或空格,否则launchd会静默失败】;移动硬盘必须在凌晨3点前已连接并挂载,否则任务跳过不报错。
保存后,在终端执行:launchctl load ~/Library/LaunchAgents/com.user.projects-sync.plist
立即测试是否生效:执行 launchctl start com.user.projects-sync,查看 /tmp/projects-sync.log 是否有成功记录。
用OneDrive客户端替代方案(仅限已格式化为APFS+FileVault加密的移动硬盘)
如果你的移动硬盘已满足OneDrive硬性要求(APFS格式、FileVault全盘加密、macOS 15.0+、OneDrive 25.097+),且你接受其“按需下载”机制带来的本地路径不可见性,可跳过FreeFileSync,直接使用OneDrive内置同步。
方法一:打开OneDrive偏好设置→“账户”→“选择文件夹”,点击右下角“更改位置”,选择移动硬盘上的空文件夹作为新同步根目录。
方法二:若已存在本地同步库,先退出OneDrive→在终端执行 mv ~/Library/CloudStorage/OneDrive* /Volumes/MyBackup/→重启OneDrive并重新登录,它会识别新路径并重建索引。
OneDrive本身不提供自定义定时,但它会在硬盘连接后自动恢复同步,因此只需确保Mac在你期望的时间段保持开机且硬盘插入即可。同步行为由OneDrive后台持续监听触发,无需额外配置定时器。

















