|
| 1 | +# 使用 Restic 进行数据备份 |
| 2 | + |
| 3 | +[Restic](https://github.com/restic/restic) 是一个由 Go 编写的跨平台备份程序,支持多种位置作为备份后端,例如:本地目录、sftp、HTTP REST server、亚马逊、微软、谷歌云等、甚至一个 Rclone 连接也可以。它对所有数据都会进行加密和验证,以确保数据安全性。 |
| 4 | + |
| 5 | +## 安装 {#install} |
| 6 | + |
| 7 | +### 服务端 {#server-side} |
| 8 | + |
| 9 | +本文使用同一开发者发布的一个简易 [HTTP REST server](https://github.com/restic/rest-server) 作为服务端,该 REST server 同样也为跨平台程序,所有系统均有支持。 |
| 10 | + |
| 11 | +下载对应平台预编译包:https://github.com/restic/rest-server/releases ,准备好程序以后使用命令启动服务: |
| 12 | + |
| 13 | +``` |
| 14 | +rest-server --path "<数据目录>" --private-repos |
| 15 | +``` |
| 16 | + |
| 17 | +程序默认监听在 8000 端口,访问地址为 `http://<IP地址>:8000`。第二个参数启用了用户隔离访问目录,例如用户 `test` 仅可访问 `http://test:<密码>@<IP地址>:8000/test`。 |
| 18 | + |
| 19 | +数据目录里需要一个 `.htpasswd` 文件来保存验证的用户列表,可以使用 `htpasswd` 程序或在线工具生成用户名/密码 |
| 20 | + |
| 21 | +``` |
| 22 | +htpasswd -B -c .htpasswd <用户名> |
| 23 | +``` |
| 24 | + |
| 25 | +### 客户端 {#client-side} |
| 26 | + |
| 27 | +本文使用 Windows 作为客户端。 |
| 28 | + |
| 29 | +- 使用 Scoop 包管理器:`scoop install restic` |
| 30 | +- 手动下载对应平台预编译包:https://github.com/restic/restic/releases ,然后将可执行文件放置到 `%PATH%` 可访问的目录里 |
| 31 | + |
| 32 | +考虑到 Restic 参数众多,这里使用一个带 UI 的应用来进行备份管理:[Backrest](https://github.com/garethgeorge/backrest) |
| 33 | + |
| 34 | +- 使用 Scoop 包管理器:`scoop install extras/backrest` |
| 35 | +- 手动下载对应平台预编译包:https://github.com/garethgeorge/backrest/releases ,解压使用 |
| 36 | + |
| 37 | +运行 `backrest-windows-tray.exe` 启动任务栏图标,右击图标选择 Open WebUI 即可进行管理,它会自动检测当前 `%PATH%` 内的 restic 可执行文件。 |
| 38 | + |
| 39 | +## 设置备份 {#set-backup-plan} |
| 40 | + |
| 41 | +打开 Backrest WebUI,在左侧的版本库列表里新增一个前面建立的库,在 URI 处填写包含用户名和用户密码的全字符串,如:`rest:http://<用户名>:<用户密码>@<IP地址>:8000/<用户名>`,最后在库密码处填入加密密码以提交保存,程序会自动在该路径上进行初始化操作。 |
| 42 | + |
| 43 | +然后在左侧的计划列表里新增一个备份计划,选择上一步新建的库,之后在路径里填入需要备份的路径,可以填入多个以同时备份多个路径。Backrest 会自动生成计划备份任务,默认为每小时进行处理,该任务在 Backrest 进程运行时会自动处理,不需手动加入系统计划任务。 |
| 44 | + |
| 45 | +计划建立成功后会按计划任务执行备份,如果需要立刻备份需要点击上面的 `Backup Now` 按钮,这会立刻进行备份操作。 |
| 46 | + |
| 47 | +## 还原备份 {#restore-from-repo} |
| 48 | + |
| 49 | +### 命令行 {#command-line} |
| 50 | + |
| 51 | +Backrest 目前还没有包含还原的功能,需要使用 restic 命令行进行操作: |
| 52 | + |
| 53 | +``` |
| 54 | +restic -r <版本库URI> restore latest --target "<还原目标目录>" --path "<备份路径>" |
| 55 | +``` |
| 56 | + |
| 57 | +这条命令会将指定路径的最新更改还原到目标目录中。 |
| 58 | + |
| 59 | +### Restic Browser |
| 60 | + |
| 61 | +这是一个 Restic 的版本库浏览和恢复工具,可以方便浏览文件历史版本,并还原单个文件。 |
| 62 | + |
| 63 | +- 使用 Scoop 包管理器:`scoop install extras/restic-browser` |
| 64 | +- 手动下载对应平台预编译包:https://github.com/emuell/restic-browser/releases ,解压使用 |
| 65 | + |
| 66 | +## 更多功能和使用指南 {#more} |
| 67 | + |
| 68 | +官方文档:https://restic.readthedocs.io/en/latest |
0 commit comments