automator 可通过「应用程序」工作流+shell 脚本实现桌面文件自动备份,支持按日期归档、跳过重复文件及过滤临时文件,并可用日历或 launchd 触发。

Automator 可以帮你把 macOS 桌面文件定期、自动地备份到指定文件夹,无需写代码也能实现。关键在于组合「访达操作」和「Shell 脚本」,避开权限限制,确保稳定运行。
创建「应用程序」类型 Automator 工作流
打开 Automator → 新建文档 → 选择「应用程序」。这样生成的程序可双击运行,也支持添加到「登录项」或配合「日历提醒」触发。
- 拖入「获取指定访达项目」动作,点击「添加」按钮,手动选中「桌面」(路径为 ~/Desktop)
- 接着拖入「对每个项目执行操作」,把上一步输出传入循环处理
- 在循环内加入「复制 Finder 项目」,目标设为你的备份位置(如 ~/Documents/Desktop_Backup)
用 Shell 脚本增强灵活性和去重能力
纯图形动作无法跳过已存在文件或按日期归档。插入「运行 Shell 脚本」动作(接收「文件列表」作为输入),粘贴以下内容:
for f in "$@"; do [[ -f "$f" ]] || continue dest="$HOME/Documents/Desktop_Backup/$(date +%Y%m%d)/$(basename "$f")" mkdir -p "$(dirname "$dest")" cp -n "$f" "$dest" done
说明:-n 参数避免覆盖已有同名文件;按日期建子目录,防止单日备份混杂。
设置自动触发(不依赖手动点击)
双击应用只适合临时备份。长期使用建议搭配系统工具:
- 用「日历」新建一个重复事件,提醒时「打开文件」→ 选择你保存的 Automator 应用
- 或用 launchd 后台运行:将应用打包为 .app 后,编写 plist 放入 ~/Library/LaunchAgents/,设定 StartCalendarInterval
- 注意:若备份目标在 iCloud 或外接盘,请先确认该卷宗已挂载,否则脚本会静默失败
排除不需要备份的文件类型
桌面常有临时文件(如 .DS_Store、.localized、下载中的 .part 文件),可在 Shell 脚本开头加过滤逻辑:
for f in "$@"; do
[[ -f "$f" ]] || continue
case "$(basename "$f")" in
.DS_Store|.localized|*.part|*.tmp) continue ;;
esac
# 后续复制逻辑保持不变
也可用「筛选 Finder 项目」图形动作预筛,但 Shell 方式更可控、易维护。











