写在前面
最重要的事: 备份一定要包含恢复脚本,一个不可恢复的备份就是脏数据!!!
简介
Restic是一个用Go语言编写,安全且高效的备份客户端。它可以将本地文件备份到许多不同的后端存储库,例如本地目录,SFTP服务器或对象存储服务。公司由于Git-Server跑在本地办公网络,需要提供一个异地定期备份的方案,备份数据要求加密存储。选定CronTab+Restic+MinIO
备份至华为云虚拟机上。
- 获取Restic并在对象存储服务上初始化存储库。
- 准备要备份的文件,并将文件备份到存储库。
- 配置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. 初始化存储库
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备份对象存储服务器
示例参考