mac上用automator创建系统级定时备份归档的关键是将automator设为“应用程序”类型,再由launchd调度执行;需配置plist文件设定触发时间、添加路径检查与日志记录、并用日期命名避免覆盖。

Mac 上用 Automator 创建系统级定时备份归档,关键不是让 Automator 自己“定时”,而是把它做成可靠的操作单元,再交给 macOS 底层机制(如 launchd)去调度执行。这样既不用装第三方工具,又能稳定运行、不依赖桌面是否活跃。
选对 Automator 文档类型:用“应用程序”封装逻辑
系统级定时任务需要后台静默运行,“快速操作”或“工作流”无法被 launchd 直接调用。必须新建为“应用程序”类型:
- 打开 Automator → 新建 → 选择“应用程序”
- 拖入“运行 Shell 脚本”操作,Shell 设为 /bin/zsh
- 脚本内容聚焦三件事:检查目标路径是否存在、执行压缩/同步、记录日志
- 例如压缩历史文件:find ~/Downloads -type f -mtime +30 -print0 | zip -q -r "$HOME/Backups/archive_$(date +%Y%m%d_%H%M).zip" --filesync -@
- 保存为 ArchiveOldFiles.app,建议放在
~/Applications/(可手动创建)
用 launchd 实现真正系统级定时
日历提醒虽简单,但要求 Mac 必须唤醒且登录;launchd 是 macOS 原生守护进程管理器,用户级配置安全、稳定、开机即载入:
- 在终端中执行:
mkdir -p ~/Library/LaunchAgents - 新建 plist 文件:
com.user.archive-old-files.plist,存入该目录 - 文件中需包含:
<key>StartCalendarInterval</key>(如每天凌晨2:15)或<key>StartInterval</key><integer>86400</integer>(每天一次) - 务必设置
<key>RunAtLoad</key><false></false>,避免开机就跑干扰使用 - 加载配置:
launchctl load ~/Library/LaunchAgents/com.user.archive-old-files.plist
增强可靠性:加路径判断和日志记录
纯脚本一出错就静默失败,加两行判断就能大幅降低意外中断风险:
- 压缩前检查目标文件夹是否存在:
[[ -d "$HOME/Backups" ]] || mkdir -p "$HOME/Backups" - 同步类任务加挂载判断:
if [[ -d "/Volumes/BackupDrive" ]]; then rsync ...; fi - 所有关键命令后追加日志:
>> ~/Library/Logs/archive.log 2>&1 - 日志里可加时间戳:
echo "$(date): started archive" >> ~/Library/Logs/archive.log
备份包自动归档与防覆盖
生成的压缩包若都叫 backup.zip,每次都会覆盖。Automator 可直接处理命名与移动:
- 用“移动 Finder 项目”把刚生成的 .zip 移到
~/Backups/ - 紧接着加“重命名 Finder 项目” → 选“添加日期或时间” → 格式设为“年月日_时分”
- 结果类似:
archive_20260709_0215.zip,清晰可溯,不冲突 - 也可在 Shell 脚本里一步完成命名:
zip -r "$HOME/Backups/archive_$(date +%Y%m%d_%H%M).zip" "$@"











