# 备份 `frost backup` 会立即备份你的文件夹,只上传自上次备份以来有变化的内容。 ## 运行备份 ```sh frost backup ``` Frost 会显示哪些内容有变化、上传了多少数据,以及抽查的结果: ```text ┌ backup sftp://me@nas.local/~/frost │ │ changes 3 added, 1 changed │ files 1,204 (2.1 GB) │ new data 14.2 MB in 9 chunks (9.8 MB uploaded after compression) │ verified ok, 21 random objects re-downloaded and checked │ └ Saved snapshot maple-absurd-3f1c ``` 当文件的内容、大小、权限或修改时间发生变化时,这个文件就算作有变化。只有文件夹的修改时间变了不算,因为临时文件总在改动它。 如果什么都没变,Frost 不会保存新快照: ```text ┌ backup sftp://me@nas.local/~/frost │ │ files 1,204 (2.1 GB) │ verified ok 3h ago, 21 objects checked │ └ Already backed up. No changes detected since snapshot maple-absurd-3f1c, saved 3h ago. ``` 当你的存储需要注意时,比如 Permafrost 账户、服务器的磁盘或本地磁盘快满了,备份结束时会显示一条 `storage` 警告。 开启自动备份后,你很少需要自己运行这个命令。参见[自动备份](#scheduling)。 ## 预览备份 ```sh frost backup --dry-run ``` 试运行会列出每一个有新数据要上传的文件以及总量,但不会上传任何内容,也不会保存快照。`-n` 是 `--dry-run` 的简写。 ## 选项 | 参数 | 作用 | | --- | --- | | `-n`, `--dry-run` | 显示将会上传什么,但不实际上传 | | `--path ` | 备份这个文件夹,而不是平时设置的那些。可以重复使用来添加更多文件夹 | | `--exclude ` | 本次额外跳过符合这个模式的文件。可以重复使用来添加更多模式 | | `--no-verify` | 备份后跳过抽查 | 如果想更改每次都要备份的文件夹,请再运行一次 `frost init`,或者参见[设置项](#settings)。 ## 备份哪些内容 Frost 会备份普通文件、文件夹和符号链接,连同它们的权限和修改时间。 - 符号链接按链接本身保存,而不是保存它指向的文件。 - 硬链接的文件会作为彼此独立的文件备份和恢复。 Frost 不会备份: - 跳过列表中的任何内容。参见[排除文件](#excluding-files)。 - 套接字、设备文件和管道。 - 文件所有者、ACL 和扩展属性。 - 在 macOS 上,iCloud 只保存在云端的文件。Frost 不会下载它们,而是跳过并列出来。 - 中断的恢复留下的 `.frost-partial-...` 文件。 ## 出问题时 | 发生了什么 | Frost 怎么做 | | --- | --- | | 某个文件或文件夹无法读取,原因可能是权限不足、在备份过程中被删除,或者只存在于 iCloud 中 | 跳过它并列出来。快照照常保存,`frost status` 会显示跳过了多少项 | | 列表中的某个文件夹不在,比如位于未插入的移动硬盘上 | 跳过它,备份其余的文件夹。`frost backup` 和 `frost status` 会指出缺失的文件夹 | | 列表中的文件夹全都不在,或者某个文件夹存在但完全无法读取 | 整个备份失败,这样就不会出现备份看似成功、实际什么都没保存的情况 | | 某个文件在 Frost 读取时发生了变化,比如正在使用的数据库、运行中的虚拟机磁盘或正在下载的文件 | 在备份结束时重新读取一次。如果它仍在变化,快照会保留它之前的副本,Frost 也会把它列出来。从未被完整备份过的文件会被跳过 | Frost 不会创建文件系统快照或数据库快照。对于总是处于使用中的文件,请在使用它的程序关闭时再备份。 在 macOS 上,有些文件夹需要你授权后 Frost 才能读取。参见 [macOS 权限](#macos-permissions)。 ## 抽查 每次保存了快照的备份之后,Frost 会随机下载几个数据块并检查,默认是 20 个。如果备份没有新内容,只有当上一次检查已超过一天或发现过问题时,才会再检查一次。检查失败时,备份会报错。参见[检查备份](#checking-backups)。 ## 中断的备份 如果备份中途停止,比如网络断开、合上笔记本电脑或按了 `Ctrl+C`,已经上传的内容不会白费。Frost 会在上传的同时记录数据块,下一次备份会跳过它们。 ## 临近计划备份时 如果计划备份会在一小时内开始,或在过去一小时内刚结束,`frost backup` 会告诉你,并在开始前询问: ```text ┌ backup sftp://me@nas.local/~/frost │ │ A scheduled backup starts in 40m, at 15:00. │ Back up now anyway? [Y/n] ``` 按 Enter 照样备份,输入 `n` 则停止。如果计划的间隔不到 4 小时,这个时间范围是间隔的四分之一。刚结束的计划备份只有在成功、并且之后你没有再备份过时才算数。Frost 只在终端里询问,预览备份或使用 `--path`、`--exclude` 时不会询问。 ## 一次只运行一个 备份或命令行恢复在运行时会锁住本地缓存。如果另一个命令也需要使用这份缓存,Frost 会提示 "a backup or restore operation is already in progress; try again when it completes"(已有备份或恢复在运行,请等它结束后再试)。如果另一个是计划备份,Frost 会提示 "a scheduled backup is already running"(计划备份正在运行),并说明它何时开始。计划备份遇到缓存被锁时,则会等待,最多等一小时。快照浏览器会释放缓存锁,所以备份运行时,你仍可打开浏览器并从中恢复。不同的缓存文件夹和不同的电脑各有自己的锁。