自动备份

Frost 借助操作系统自带的计划程序按计划备份。两次备份之间,没有任何东西在后台运行。

#更改备份计划

frost init 会询问多久备份一次。之后要修改:

frost config set schedule.every 6h

可选值有 hourly、2h、3h、4h、6h、8h、12h、daily 和 weekly,默认是 daily。

要选择备份的时间,可以设置一个 24 小时制的时间,并为每周备份选定星期几:

frost config set schedule.time 09:30
frost config set schedule.day friday

默认值是 15:00 和 sunday。关闭或重新开启自动备份:

frost config set schedule.enabled false
frost config set schedule.enabled true

每项修改都会立即更新计划任务。在 macOS 和 Windows 上,计划备份进行期间做的修改,会在那次备份结束后立即生效。 如果你自己编辑 config.toml,下一个 Frost 命令会更新计划任务。

#备份在什么时候运行

备份在 schedule.time 运行,按电脑的本地时间计算:

schedule.every 备份时间
daily 每天的这个时间
weekly 每周 schedule.day 的这个时间
2h 到 12h 这个时间,以及它前后每隔一个间隔的时间。从 15:00 起算的 6h 会在 03:00、09:00、15:00 和 21:00 运行
hourly 每小时一次,在这个时间的分钟数运行

systemd 每次会随机推迟最多 5 分钟启动。

#错过的备份

如果备份到点时电脑处于关机或睡眠状态,Frost 会在电脑恢复后备份。不管错过了多少次,都只备份一次。

计划程序 补上错过的备份
launchd(macOS) Mac 唤醒时,或关机后你登录时
systemd(Linux) 电脑唤醒或启动时;如果 lingering 没有开启,则在你登录时
任务计划程序(Windows) 电脑恢复且你已登录后尽快运行
cron(Linux) 电脑恢复后 15 分钟内

使用 cron 时,Frost 每 15 分钟检查一次,只在有备份到期或被错过时才备份。某个时间点已经备份过的话,无论是计划备份还是你自己运行的,都不会再备份第二次。

如果想跳过错过的备份,只按时备份:

frost config set schedule.catch_up false

如果计划备份启动时网络还没恢复,或者磁盘、网络共享还没挂载,它会在大约 5 分钟内重试。使用本地磁盘时,备份运行时磁盘必须已连接。自托管存储用 Frost 自己的 SSH 密钥登录,所以不需要你在场也能运行。如果另一个备份正在运行,它会等那个备份结束。

在 Windows 上,只有你登录后才会运行计划备份。电脑使用电池供电时不会启动计划备份,拔掉电源时也会停止正在进行的计划备份。在 macOS 上以及使用 systemd 时,计划备份以低优先级运行,不会拖慢你的电脑。

#计划任务

系统 计划程序 计划任务
macOS launchd ~/Library/LaunchAgents/io.github.whatithasisandalwayswillbe.frost.plist
使用 systemd 的 Linux systemd 用户定时器 ~/.config/systemd/user/frost-backup.service 和 frost-backup.timer
不使用 systemd 的 Linux cron crontab 中带有 # frost-backup 标记的一行
Windows 任务计划程序 一个名为 frost backup 的任务

计划任务运行 frost backup 时,使用的是设置它时的配置文件夹和缓存文件夹。如果你更改了这些文件夹,请再运行一次 frost init。

在 macOS 上,这个计划任务会以 Node.js Foundation 的名称出现在“系统设置 > 通用 > 登录项与扩展”(System Settings > General > Login Items & Extensions)中,Node.js Foundation 是 Frost 自带运行时的发布者。在那里把它关掉会停止计划备份,frost status 也会报告计划任务缺失。如果想停止计划备份,请改用 frost config set schedule.enabled false。

使用 systemd 时,如果能确认 lingering 处于关闭状态,Frost 会尝试为你的用户开启它(loginctl enable-linger)。lingering 让备份能在你注销后继续运行。如果 Frost 无法开启它,注销后备份可能就不会运行。删除定时器时,只有 Frost 记录过自己开启了 lingering,才会把它关掉。

#日志

计划程序 日志位置
launchd、cron 和任务计划程序 Frost 缓存文件夹中的 frost.log。参见文件与文件夹
systemd 系统日志(journal)。用 journalctl --user -u frost-backup 查看

超过 1 MiB 的日志会在下一次运行前被清空。frost status 也会显示上一次备份是否成功。

#计划任务丢失时

如果计划任务被删除或关闭,frost status 会显示 "scheduled job is missing"(计划任务缺失)。用下面的命令恢复它:

frost config set schedule.enabled true