Files
cattom 816336fe06
Deploy / deploy (push) Successful in 43s
Add Backrest.md
2026-03-26 16:59:39 +08:00

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)