Please enable Javascript to view the contents

服务数据备份方案-Restic

 ·  ☕ 2 分钟

写在前面

最重要的事: 备份一定要包含恢复脚本,一个不可恢复的备份就是脏数据!!!

简介

Restic是一个用Go语言编写,安全且高效的备份客户端。它可以将本地文件备份到许多不同的后端存储库,例如本地目录,SFTP服务器或对象存储服务。公司由于Git-Server跑在本地办公网络,需要提供一个异地定期备份的方案,备份数据要求加密存储。选定CronTab+Restic+MinIO备份至华为云虚拟机上。

  1. 获取Restic并在对象存储服务上初始化存储库。
  2. 准备要备份的文件,并将文件备份到存储库。
  3. 配置CronTab,自动执行备份以获取每小时快照,并在必要时自动精简旧快照。

环境准备

Restic可执行文件
MinIO信息获取

  • 访问秘钥: AWS_ACCESS_KEY_ID
  • 秘钥: AWS_SECRET_ACCESS_KEY
  • 服务器URL: RESTIC_REPOSITORY
  • Bucket名称: RESTIC_REPOSITORY

RESTIC_PASSWORD定义Restic将用于加密备份的密码。此加密发生在本地,因此可以备份到不受信环境的异地服务器,并将其复制到安全备份的地方。可以通过KeyPass软件,或者通过openSSL命令:

1
openssl rand -base64 24

环境准备过程如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 1. Get Restic bin-file
cd ~
curl -LO https://github.com/restic/restic/releases/download/v0.9.6/restic_0.9.6_linux_amd64.bz2
# Extract Here
bzip2 -dk restic*
# Set file
cp restic* /usr/local/bin/restic
chmod +x /usr/local/bin/restic

# test
restic version

# 2. set Environments to access MinIO-bucket
export AWS_ACCESS_KEY_ID="minio-access-key"
export AWS_SECRET_ACCESS_KEY="minio-secret-key"
export RESTIC_REPOSITORY="s3:<server-url|eg=http://127.0.0.1:9000>/<bucket-name|eg=restic-git>/"
export RESTIC_PASSWORD="<a-strong-password|eg=j8CGOSdz8ibUYK137wtYdVsRoGUp>"

1. 初始化存储库

1
restic init

2. 准备备份文件

备份服务为内部开发服务, docker-run 跑在虚拟机上.所以做如下准备:

  • 服务的镜像文件
  • 服务的数据文件
  • 服务恢复脚本

3. crontab设置定时备份

最近24小时备份,7天备份,12月备份

1
2
/usr/local/bin/restic backup -q ./restic-jenkins
/usr/local/bin/restic forget -q --prune --keep-hourly 24 --keep-daily 30 --keep-monthly 12

restic 操作备查

1
2
3
4
5
6
7
8
# backup
restic  backup --tag data /opt/bkp_dir

# show snapshots
restic snapshots

# restore
restic  restore <snapshot-id> --target /opt/restore-data

Reference

Restic备份对象存储服务器
示例参考

分享

Hex
作者
Hex
CloudNative Developer

目录