前言


相信各位都在黑五收获到了自己心仪的小鸡,但并不是每个商家都提供快照备份服务,所以分享一下我正在用的这套备份方案

先贴上项目地址和文档:

看过文档后,不难发现Backrest本质上是一个带WebUI的restic,但所有的配置和操作都可以在网页上完成,并且内置了通知服务,比起备份脚本显然更适合当代mjj体质

Step 1 创建备份存储(Backup Repository)


在当前方案中,备份存储的读/写都通过rclone完成,所以只要rclone支持就能用

以cloudflare的R2对象存储为例:

  • 1.1 创建一个存储桶,名字根据个人习惯命名即可,位置根据当前服务器所在区域选择即可

  • 1.2 回到R2对象存储,记住S3 API,后面要用,接下来创建API Token

  • 1.3 按需选择API Token的权限并创建

  • 1.4 记住Access Key IDSecret Access Key,后面要用

Step 2 Rclone安装和配置


  • 2.1 安装Rclone

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
  • 2.2 配置Rclone,参考文档:Cloudflare Docs Rclone

    • 获取配置文件路径
    rclone config file# Configuration file doesn't exist, but rclone will use this path:# /root/.config/rclone/rclone.conf
    • 修改配置文件
    vim /root/.config/rclone/rclone.conf
    • 新增如下配置并保存
    [r2]type = s3provider = Cloudflareaccess_key_id = xxx		# 填步骤1.4中记住的Access Key IDsecret_access_key = xxx		# 填步骤1.4中记住的Secret Access Keyendpoint = xxx			# 填步骤1.2中记住的S3 API
    • 测试配置是否正确
    rclone ls r2:xxx-backup		# 用步骤1.1的Bucket name,没有报错则配置正确

Step 3 Backrest安装和配置


  • 3.1 安装Backrest(Docker Compose)

    • 找一个合适的地方存放docker-compose.yml如下
    services:  backrest:    image: garethgeorge/backrest:latest    container_name: backrest    hostname: backrest    volumes:      - ./backrest/data:/data      - ./backrest/config:/config      - ./backrest/cache:/cache      - ./backrest/tmp:/tmp      - /root/.config/rclone:/root/.config/rclone      - /root:/userdata/root  # Mount local paths to backup    environment:      - BACKREST_DATA=/data      - BACKREST_CONFIG=/config/config.json      - XDG_CACHE_HOME=/cache      - TMPDIR=/tmp      - TZ=Asia/Hongkong    ports:      - "9898:9898"    restart: unless-stopped

    需要注意的是,使用docker部署需要自行处理备份路径的映射,时区也尽量配置正确

    • 启动容器
    docker compose up -d
  • 3.2 宿主机安装请参考 Backrest: Running on Linux

  • 3.3 配置Backrest

    • 首次打开需要配置实例名、用户名和密码,取消勾选Disable Authentication

    • 配置备份存储(Add Repo)

      填好配置后,可以点击Test Configuration,出现如下提示则一切正确:

    • 配置备份计划(Add Plan)

      配置完成后,在Repo的Tree View下应该能看到计划执行的任务:

      已完成的计划任务则可以查看详细信息:

      更多配置和用法可以参考文档 Backrest Operations Guide

    • 配置通知(Hooks)
      在配置存储和计划时,都支持配置通知,当前版本支持的通知有:

      以Telegram为例,正确填入Bot TokenChat ID即可:

      更多通知配置可以参考文档 Backrest Hooks

Step 4 备份恢复


首先备份恢复的目标机器上需要安装和配置Rclone(步骤2)并安装好Backrest(步骤3.1)

  • 4.1 配置Backrest

    • 配置备份存储(Add Repo)

      填好配置后,可以点击Test Configuration,出现如下提示则一切正确:

      需要注意的是found an existing repo,表示这个位置已经有备份存储了

    • 选择上一步配置好的Repo,点击Index Snapshots索引仓库中已有的快照

    • 通过Snapshot Browser选择要恢复的目录/文件

    • 恢复到指定目录

      需要注意docker的目录映射,确保能正确恢复到宿主机上


本文内容依据CC BY-NC-SA 4.0许可证进行授权