商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Mac怎么设置定时关机前先备份数据

Mac怎么设置定时关机前先备份数据

  发布于2026-08-21 阅读(0)

扫一扫,手机访问

唯一靠谱的办法,是用launchd守护进程来监听关机信号,以此触发备份。它会对com.apple.loginwindow.shutdownInitiated事件做出响应,不依靠用户登录,也不依赖图形界面。只要系统收到关机指令,它就会启动时间机器备份,这种方式可靠性极高,特别适合无人值守的情况。

Mac怎么设置定时关机前先备份数据

你想让Mac在每天晚上11点自动关机,又担心未保存的文档或未同步的项目丢失——系统定时关机本身不触发备份,必须主动将时间机器备份动作嵌入关机流程,否则关机瞬间所有未存数据、未完成同步的iCloud文件、未提交的Git变更都会永久消失。

用快捷指令+AppleScript实现关机前自动备份并弹窗提醒

这是唯一兼顾图形界面交互与自动化执行的方案:它先调用tmutil startbackup --auto启动时间机器备份,等待至备份初始化完成,再弹出“正在备份,完成后将关机”通知,最后执行关机。整个过程完全走macOS原生路径,会尊重你设置的“询问是否保存更改”提示,不会跳过任何文档保存弹窗。

第一步:打开“快捷指令”App → 点击右上角“+”新建快捷指令 → 命名为“关机前备份并关机”。

第二步:点击“添加操作” → 搜索“运行Shell脚本” → 选择“Shell”类型 → 在脚本框中粘贴以下内容:

tmutil startbackup --auto & sleep 5 && until tmutil status | grep -q "Backup completed|Backup failed"; do sleep 10; done

这行命令启动备份后持续轮询状态,直到出现“Backup completed”或“Backup failed”才继续;【若时间机器未启用或目标磁盘断开,该指令会卡住直至超时,无法进入下一步关机】

第三步:再次点击“添加操作” → 搜索“显示通知” → 标题填“备份已完成”,正文填“Mac将在30秒后关机,请确认所有文档已保存”。

第四步:再点“添加操作” → 搜索“运行Shell脚本” → 新建第二个脚本 → 输入:sudo shutdown -h now → 点击右上角“下一步” → 输入管理员密码保存(此步仅首次执行时需手动输一次)。

第五步:切换到“自动化”标签页 → 点击“创建个人自动化” → 选择“特定时间” → 设为每天22:50 → 关闭“运行前询问” → 添加操作:搜索并插入你刚创建的“关机前备份并关机”快捷指令 → 点击“完成”。

用launchd守护进程监听关机信号触发备份

此方法不依赖用户是否登录、图形界面是否活跃,只要系统收到关机指令(无论是菜单点击、快捷键还是定时任务),就会立即启动备份。它直接响应com.apple.loginwindow.shutdownInitiated系统事件,可靠性最高,适合长期无人值守的办公Mac或开发主机。

方法一:准备plist配置文件

在访达中按Command+Shift+G,输入~/Library/LaunchAgents/回车 → 新建文本文档,命名为com.user.pre-shutdown-backup.plist → 用文本编辑器打开,粘贴以下内容:

Labelcom.user.pre-shutdown-backupProgramArgumentssh-ctmutil startbackup --auto & sleep 15 && until tmutil status | grep -q "Backup completed|Backup failed"; do sleep 5; doneWatchPaths/private/var/run/com.apple.loginwindow.shutdownInitiated

方法二:加载并启用该守护进程

打开终端 → 执行:launchctl load ~/Library/LaunchAgents/com.user.pre-shutdown-backup.plist → 回车 → 若无报错即表示已注册成功。

验证是否生效:手动点击苹果菜单→“关机…” → 观察菜单栏右上角是否出现时间机器旋转图标;若5秒内出现,说明备份已触发。注意:【此方法不提供任何视觉提醒,也不会等待你点击保存文档,务必确保“询问是否保存更改”已开启且所有应用处于可响应状态】

用Automator工作流配合系统定时关机

如果你已习惯用系统设置安排每日23:00关机,又想在此基础上追加备份动作,这个方案最轻量:它不替换原有定时逻辑,而是在关机指令发出后、实际断电前插入一段可执行的Automator工作流,全程无需命令行或权限调试。

打开Automator → 新建“快速操作” → 在右侧操作库搜索“运行Shell脚本”,拖入工作区 → 脚本内容填:tmutil startbackup --auto → 再拖入一个“暂停”操作 → 设为“60秒”(确保有足够时间完成小规模备份) → 保存为“关机前备份.quickaction”。

前往“系统设置”→“隐私与安全性”→“自动化”→ 点击右下角“详细信息…” → 解锁 → 点击“+”→ 定位到刚保存的“关机前备份.quickaction”文件 → 添加。

回到“系统设置”→“电池”或“节能器”→“定时”→ 勾选“设定以下日期的睡眠、重新启动或关机”→ 选择“关机”,设为22:55 → 点击“好”。这一步提前5分钟触发,留给Automator工作流执行窗口;系统会在22:55准时调用你授权的快速操作,启动备份,结束后继续走原有关机流程。

本文转载于:https://www.php.cn/faq/3027753.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注