122 lines
4.1 KiB
Markdown
122 lines
4.1 KiB
Markdown
# Backrest: 备份新选择
|
|
|
|
## 环境
|
|
|
|
- Ubuntu 24.04 LTS
|
|
- Docker & Docker Compose
|
|
|
|
## 安装
|
|
|
|
``` bash
|
|
mkdir ~/backrest && cd ~/backrest
|
|
|
|
touch docker-compose.yml && nano docker-compose.yml
|
|
```
|
|
|
|
请按照实际情况修改 `docker-compose.yml` 中的相关部分。
|
|
|
|
``` yaml title="docker-compose.yml"
|
|
services:
|
|
backrest:
|
|
image: garethgeorge/backrest:latest
|
|
container_name: backrest
|
|
hostname: your-server-name
|
|
ports:
|
|
- "9898:9898"
|
|
volumes:
|
|
# Backrest data
|
|
- /path/to/backrest/data:/data
|
|
- /path/to/backrest/config:/config
|
|
- /path/to/backrest/cache:/cache
|
|
- /path/to/backrest/tmp:/tmp
|
|
# Rclone config
|
|
- /path/to/backrest/rclone:/root/.config/rclone
|
|
# Data backup path
|
|
- /path/to/immich-app:/backup/immich-app:ro
|
|
# Data restore path
|
|
- /path/to/backrest/restore:/restore
|
|
environment:
|
|
BACKREST_DATA: /data
|
|
BACKREST_CONFIG: /config/config.json
|
|
XDG_CACHE_HOME: /cache
|
|
TMPDIR: /tmp
|
|
TZ: "Asia/Shanghai"
|
|
restart: unless-stopped
|
|
```
|
|
|
|
``` bash
|
|
sudo docker compose up -d
|
|
```
|
|
|
|
## 配置
|
|
|
|
用浏览器打开 `http://your-server-ip:9898`,首次启动需要配置服务器名称和管理员账号密码。
|
|
|
|
填写 Cron 表达式时可以参考[这个网站](https://crontab.guru/)。
|
|
|
|
### 仓库
|
|
|
|
- **仓库名称**: 名称中只能包含数字和字母,以及短横线 - 或下划线 _ ,创建后不可更改。
|
|
- **仓库 URI**
|
|
- 本地: `/path/to/your/storage`,绝对路径,需要在 `docker-compose.yml` 的 `volumes` 段填写映射路径。
|
|
- 阿里云 OSS: `s3:https://oss-[Region ID].aliyuncs.com/[Bucket Name]`
|
|
- **密码**: 建议密码熵值至少为 128 位(20 个字符或更长)。点击 `生成` 以使用浏览器的加密随机 API 生成一个随机密码。**妥善保存该密码!**
|
|
- **环境变量**(阿里云 OSS)
|
|
- [获取 AccessKey](https://ram.console.aliyun.com/users)
|
|
- `AWS_ACCESS_KEY_ID=[your-AccessKey-id]`
|
|
- `AWS_SECRET_ACCESS_KEY=[your-AccessKey-secret]`
|
|
- **选项**(阿里云 OSS)
|
|
- `-o s3.bucket-lookup=dns`
|
|
- `-o s3.region=[Region ID]`
|
|
- `--limit-upload 1800` (上传限速,单位为 KiB/s)
|
|
- **清理策略**
|
|
- **清理后最大未引用数据占比**: `10`
|
|
- **调度类型**: `Cron`
|
|
- **Cron 表达式**: `0 8 * * 3` (每周三早上8点)
|
|
- **参考时钟**: `本地`
|
|
- **检查策略**
|
|
- **读取数据百分比**: `10`
|
|
- **调度类型**: `Cron`
|
|
- **Cron 表达式**: `0 8 * * 4` (每周四早上8点)
|
|
- **参考时钟**: `本地`
|
|
|
|
### 调度计划
|
|
|
|
- **调度计划名称**: 名称中只能包含数字和字母,以及短横线 - 或下划线 _ ,创建后不可更改。
|
|
- **路径**: `/path/to/your/data`,绝对路径,需要在 `docker-compose.yml` 的 `volumes` 段填写映射路径。
|
|
- **备份调度**
|
|
- **调度类型**: `Cron`
|
|
- **Cron 表达式**: `0 6 * * *` (每天早上6点)
|
|
- **参考时钟**: `本地`
|
|
- **保留策略**: `按计数`
|
|
- **保留最近的N个快照**: `7`
|
|
|
|
## 恢复数据
|
|
|
|
以下讨论设备正常运行时恢复部分数据,和设备重置后从零恢复数据两种情况。
|
|
|
|
### 部分数据恢复
|
|
|
|
点击数据所在的调度计划,找到希望恢复的对应时间点的备份,在“快照”处打开“快照浏览器”。
|
|
|
|
点击希望恢复的文件夹/文件的右侧选项,点击 `Restore to path`。
|
|
|
|
`Restore to path`: `/restore/[backrest-generate]`
|
|
|
|
恢复的数据会存放在 `/path/to/backrest/restore/[backrest-generate]` 内。
|
|
|
|
### 从零恢复数据
|
|
|
|
参照上述流程重新安装 Backrest。
|
|
|
|
参照上述流程重新配置仓库,**仓库 URI**、**密码**、**环境变量**(阿里云 OSS)和**选项**(阿里云 OSS)等务必与此前配置一致。
|
|
|
|
在对应仓库界面内,点击 `索引快照`。快照完成索引后,将按创建时间顺序以树状视图显示在 Backrest 中。
|
|
|
|
接下来,可参照部分数据恢复的流程恢复需要的数据。
|
|
|
|
## 参考
|
|
|
|
[Restore Files | Backrest](https://garethgeorge.github.io/backrest/introduction/restore-files)
|
|
|
|
[Backrest:自建备份方案的一种可能 - 初之音](https://www.himiku.com/archives/backrest.html) |