restic备份和数据恢复

发布于 2022-10-08  1.65k 次阅读


restic 数据备份以及数据恢复

一、了解restic

Restic 是一款 GO 语言开发的开源免费且快速、高效和安全的跨平台备份工具。

Restic 是一个快速、高效、安全的备份程序。它支持三个主流操作系统(Linux、macOS、Windows),Restic支持多种备份方式,可以将数据备份到本地、SFTP、AWS S3(对象存储)等

rclone rsync 只支持本地向远程同步,远程的数据永远会被覆盖,而Restic则是以快照形式保存数据,并且是增量备份数据。

二、安装restic

在主机
下载github 上的restic程序包,或者使用在96.11:/home/jyl/restic_0.13.1_linux_amd64.tar程序包
#https://github.com/restic/restic/releases/download/v0.13.1/restic_0.13.1_linux_amd64.bz2
tar -xvf restic_0.13.1_linux_amd64.tar
mv restic_0.13.1_linux_amd64 /usr/sbin/restic
chmod +x /usr/sbin/restic
##查看版本
[root@tcosmo-ceph-mon01 ~]# restic version
restic 0.13.1 compiled with go1.18 on linux/amd64

restic 常用参数说明:

restic 参数 对应参数说明
backup 备份文件
restore 指定还原的快照
--target 指定还原快照到具体的目录
restore latest 最后一个备份的快照
-r, --repo 备份或者要恢复的的repo存储库
diff 显示两个快照中数据差异
init 初始化备份数据存储库
version 显示版本信息
tag 给快照打标签
forget 删除快照
snapshots 查看所有备份快照
-v,--verbose 输出备份过程中的统计信息
ls 列出快照中的文件
-p, --password-file file 存储库的密码文件路径,用于免密
-h, --help 查看 restic 帮助信息,以及参数使用

三、主机间数据备份及还原

主机名 IP 功能
主机A 10.206.65.7 需要备份本地文件:/data
主机B 10.206.65.11 远程端备份文件/backup_data

3.1 配置两个主机间互信

使用restic 将主机A的数据备份到主机B,需要主机A到主机B免密钥和互信

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.206.65.11

3.2 初始化备份

查看主机A 上本地 /data文件

image-20230113094924098

主机A上创建初始化

backup_data 是远程repo存储库所在位置

[root@tcosmo-ceph-mon01 ~]# restic -r sftp:root@10.206.65.11:/backup_data init
enter password for new repository:#输入密码
enter password again:#再次输入密码
created restic repository ee6a3a72bd at sftp:root@10.206.65.11:/data

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.

执行初始化备份时候一点要保证主机A能够免密登录到主机B 上

3.3 备份数据

把主机A上/data数据备份到主机B backup_data 目录下

restic -r sftp:root@10.206.65.11:/backup_data --verbose backup /data/

在主机A查看备份的快照,以及快照内容

[root@tcosmo-ceph-mon01 /]# restic -r sftp:root@10.206.65.11:/backup_data snapshots
enter password for repository:
repository 92efb528 opened successfully, password is correct
ID        Time                 Host               Tags        Paths
-------------------------------------------------------------------
498e5b8b  2023-01-13 09:59:14  tcosmo-ceph-mon01              /data
-------------------------------------------------------------------
1 snapshots
###查看备份内容
restic -r sftp:root@10.206.65.11:/backup_data ls 498e5b8b

image-20230113112531384

restic采取增量备份方式,再下次备份的时候restic只会备份有改动和增加的文件,并创建新快照(还原点)

#在主机A 上/data 下创建一个1024MB 的test.iso文件
[root@tcosmo-ceph-mon01 data]# dd if=/dev/zero of=/data/test.iso bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.629136 s, 1.7 GB/s
##再次主机A将/data 增量备份到主机B上
#restic -r sftp:root@10.206.65.11:/backup_data --verbose backup /data/ 

在主机A 上再次查看备份的快照

[root@tcosmo-ceph-mon01 data]# restic -r sftp:root@10.206.65.11:/backup_data snapshots --password-file  /home/restic/rc-password
repository 92efb528 opened successfully, password is correct
ID        Time                 Host               Tags        Paths
-------------------------------------------------------------------
498e5b8b  2023-01-13 09:59:14  tcosmo-ceph-mon01              /data
5e8d564a  2023-01-13 11:19:07  tcosmo-ceph-mon01              /data
-------------------------------------------------------------------
2 snapshots

3.4 restic免密码

上面备份的时候,都需要输入密码,肯定不适合脚本自动备份,可以使用--password-file来配置免密码

##将密码保存一个目录
echo "Admin@123" > /home/restic/rc-password
##再次使用restic 命令过程就没有提示输入密码了
[root@tcosmo-ceph-mon01 /]# restic -r sftp:root@10.206.65.11:/backup_data snapshots --password-file  /home/restic/rc-password
repository 92efb528 opened successfully, password is correct
ID        Time                 Host               Tags        Paths
-------------------------------------------------------------------
498e5b8b  2023-01-13 09:59:14  tcosmo-ceph-mon01              /data
-------------------------------------------------------------------
1 snapshots

3.5 还原数据

将主机A data 目录下数据清空,来还原数据

[root@tcosmo-ceph-mon01 data]# rm -rf /data/*
##还原数据
[root@tcosmo-ceph-mon01 data]# restic -r sftp:root@10.206.65.11:/backup_data restore 498e5b8b --target /data --password-file  /home/restic/rc-password
repository 92efb528 opened successfully, password is correct
restoring <Snapshot 498e5b8b of [/data] at 2023-01-13 09:59:14.635956798 +0800 CST by root@tcosmo-ceph-mon01> to /data

还原完成后,会多一个data 目录,也就是备份过程是连同目录一起备份

image-20230113110157105

3.6 删除快照

通过forget,可以删除指定的快照

restic -r sftp:root@10.206.65.11:/backup_data forget 快照号