背景
现有备份服务器 A,业务服务器 B、C。A 仅有最基本的 lvm + xfs 存储和 ssh 连接。为了满足多版本备份,选择使用 restic 备份方案。
restic 的优势主要有以下几点:
-
备份目的地不需要安装额外软件,没有环境要求,多种连接方式
-
去重、多版本、加密、快速
-
开源、多平台支持、使用简单
下面的步骤以服务器 B 备份到 A 为例,C 同理。
环境准备
安装 restic
备份服务器 A 不需要安装任何程序,在业务服务器 B 和 C 上安装 restic 即可,直接在 apt 源安装即可
|
|
配置 ssh key 免密登陆
创建密钥对和配置过程不赘述,需要注意一点的是,由于备份时使用 sudo 备份,(因为有的文件是由 docker 作为 root 创建出来的),所以你的密钥需要配置在 root 用户 home 下的 .ssh 文件夹里,而不是普通用户的 home 里。
创建备份仓库和初次备份
-
在 B 服务器上执行命令,在 A 服务器上创建备份 repo
1
sudo restic init --repo sftp:aiteam@ServerA_IP:/export/aiteam/restic-repo/r750xa
执行后会让你输入一个密码,设置好后要记住这个密码
-
在本机创建一个密码文件保存刚才设置的密码,为后续自动化备份做准备
1 2 3
sudo mkdir -p /etc/restic sudo bash -c 'echo "你的仓库密码" > /etc/restic/password' # 把 "你的仓库密码" 替换成真实的密码 sudo chmod 600 /etc/restic/password
-
尝试初次备份,验证配置
1 2 3
sudo restic --repo sftp:aiteam@ServerA_IP:/export/aiteam/restic-repo/r750xa \ --password-file /etc/restic/password \ backup /mnt/extend/appdata /mnt/extend/Projects
仓库验证和快照管理
检查仓库完整性
|
|
列出所有快照
|
|
管理旧快照
由于备份没有长期保存的需求,所以我这边选用最简单的保留近 7 天快照
|
|
自动化
使用 crontab 自动化即可,每天执行一次备份、删除旧快照,即可保证始终有近 7 天的版本。可以使用 Restic Browser 便捷的查看历史版本,大概就是这样的效果
关于 Docker
官方有提供 Docker,但大概就是一个执行 restic 二进制的容器,如果要通过 SSH 连接配置 key 的话,不是很方便,可以考虑使用 mazzolino/restic
这个镜像,在镜像内操作
Photo by Steve Gribble on Unsplash