13
2025
03
20:00:29

使用Restic工具进行数据备份

目录 
1 简介
2 Restic 支持的存储类型
3 安装
4 备份至本地
4.1 创建备份仓库
4.2 备份指定文件夹到备份仓库
4.3 查看备份快照
4.4 还原备份
4.4.1 指定版本号还原
4.4.2 还原最近一次备份
4.5 还原后的问题
5 备份至云
5.1 设置密钥信息
5.2 创建备份仓库
5.3 备份
5.4 查看快照
5.5 还原备份
5.5.1 按版本号还原
5.5.2 还原最近一次备份
6 更多用法
6.1 免密码操作
6.2 设置排除文件
6.2.1 按文件路径及格式排除
6.2.2 按文件体积排除
6.3 备份多个路径
6.4 从快照中还原指定文件或文件夹
6.5 列出快照中的文件
6.6 备份标签
6.7 删除快照
6.7.1 删除单个快照
6.7.2 根据策略删除快照
6.8 查看快照大小
6.8.1 查看指定快照大小
6.8.2 查看最近一次快照的大小
6.9 查找文件
6.9.1 在所有快照中查找文件
6.9.2 在指定快照中查找文件
7 常见问题
7.1 锁(lock)
7.2 有关锁的命令

简介

自从服务器中了病毒后,更加意识到了数据备份的重要性。

Restic 是一款 GO 语言开发的开源免费且快速、高效和安全的跨平台备份工具。Restic 使用加密技术来保证你的数据安全性和完整性,可以将本地数据加密后传输到指定的存储。
Restic 同样支持增量备份,可随时备份和恢复备份。Restic 支持大多数主流操作系统,比如:Linux、macOS、Windows 以及一些较小众的操作系统 FreeBSD 和 OpenBSD 等。

项目地址:https://github.com/restic/restic

Restic 支持的存储类型

Restic 支持的存储种类比较多,大致有如下这些类型:

  • 本地存储

  • SFTP

  • REST Server

  • Amazon S3

  • 阿里云 oss

  • Minio Server

  • OpenStack Swift

  • Backblaze B2

  • Microsoft Azure Blob Storage

  • Google Cloud Storage

  • 通过 Rclone 挂载的存储 (比如:Google Drive、OneDrive 等)

安装

我是windows操作系统,下载的是:restic_0.13.0_windows_386.zip这个压缩包,解压后将restic.exe文件拷贝至C:\Windows\System32就可以了。当然你也可以拷贝至其他目录,只不过需要更改环境变量。

验证:

restic version

显示版本号则说明安装成功。

备份至本地

创建备份仓库

概念跟git相似,需要先创建一个库:

restic init --repo D:/backup

执行以上命令将D:/backup文件夹作为备份仓库。
执行命令过程中,会让你输入备份仓库密码,记住此密码不要丢失,后面的备份还原都需要用到该密码。

备份指定文件夹到备份仓库

添加一个本地文件夹到备份仓库:

restic --repo D:/backup backup D:/mywork

执行以上命令,会将D:/mywork文件夹中的内容备份至备份仓库。
执行命令过程中,需要输入之前你录入的密码,然后就是备份的过程,备份完成后会有如下提示:

最后的一行,snapshot 4bfac36b saved中的4bfac36b就是本次的备份版本号,后面可以通过该版本号来删除备份或还原备份。

查看备份快照

restic -r D:/backup snapshots

在恢复备份之前,一般会先查看一下快照,防止恢复了错误的版本,可以使用上面的命令。

还原备份

指定版本号还原

指定 restore 哪一个版本号,以及 target 指向一个恢复路径,就会完成备份的还原。

restic -r D:/backup restore 4bfac36b --target D:/mywork_restore

执行以上命令后,将会把4bfac36b版本恢复到D:/mywork_restore文件夹

还原最近一次备份

restic -r D:/backup restore latest --target D:/mywork_restore

还原后的问题

还原后,在指定的还原文件夹中会出现以路径形式的文件夹,例如上面的例子还原后的文件夹长这样:

D:/mywork_restore/D/mywork/...

如果你想去掉路径中的D/mywork,可以先cd进入到备份文件夹后,再使用如下命令备份:

cd D:/mywork;restic --repo D:/backup backup .

可以看到,backup命令后是一个.,表示备份当前目录。这样还原出来的就不会有路径文件夹了。

备份至云

我这里备份至阿里云的OSS,理论上也支持备份至腾讯云等类似Amazon S3的对象存储。

设置密钥信息

Linux:

export AWS_ACCESS_KEY_ID=<MY_ACCESS_KEY>export AWS_SECRET_ACCESS_KEY=<MY_SECRET_ACCESS_KEY>

Windows:

SET AWS_ACCESS_KEY_ID=<MY_ACCESS_KEY>SET AWS_SECRET_ACCESS_KEY=<MY_SECRET_ACCESS_KEY>

创建备份仓库

restic -o s3.bucket-lookup=dns -o s3.region=<OSS-REGION> -r s3:https://<OSS-ENDPOINT>/<OSS-BUCKET-NAME> init

OSS-REGION:地域名称
OSS-ENDPOINT:地域节点
OSS-BUCKET-NAME:Bucket名称

例如:

restic -o s3.bucket-lookup=dns -o s3.region=oss-cn-shanghai -r s3:https://oss-cn-shanghai.aliyuncs.com/backuptest init

备份

restic -r s3:https://oss-cn-shanghai.aliyuncs.com/backuptest backup D:/mywork

查看快照

restic -r s3:https://oss-cn-shanghai.aliyuncs.com/backuptest snapshots

还原备份

按版本号还原

restic -r s3:https://oss-cn-shanghai.aliyuncs.com/backuptest restore 9dc0a53a --target D:/mywork_restore

还原最近一次备份

restic -r s3:https://oss-cn-shanghai.aliyuncs.com/backuptest restore latest --target D:/mywork_restore

更多用法

免密码操作

上面备份还原等操作,都需要输入密码,不适合脚本自动备份,可以使用--password-file参数自动从指定位置读取密码。
例如把密码保存在D:/resticpasswd文件中,执行备份或还原时,加上--password-file D:/resticpasswd参数即可。
例如备份操作:

restic -r s3:https://oss-cn-shanghai.aliyuncs.com/backuptest --password-file D:/resticpasswd backup D:/mywork

设置排除文件

按文件路径及格式排除

备份过程中,有的目录不需要备份,例如缓存文件夹,日志文件夹,.svn,.git等。
将需要排除的目录写到一个文件中,例如我写到D:/excludes.txt,内容如下:

# 排除以下格式文件*.pdf*.zip*.rar*.psd*.nb3*.exe*.mp3*.mp4# 排除以下文件夹.idea.svn.gituploads/*cache/*log/*

更多排除规则可以查看官网文档

在备份时加上--exclude-file参数,例如:

restic -r s3:https://oss-cn-shanghai.aliyuncs.com/backuptest --password-file D:/resticpasswd backup D:/mywork --exclude-file=D:/excludes.txt

这样再备份中,就会排除指定的文件,提高备份效率。

按文件体积排除

有的附件体积比较大,不想备份时,可以设置--exclude-larger-than参数进行排除,例如:

--exclude-larger-than 2M

即:大于2M的文件不备份

备份多个路径

当你想要从许多不同位置备份文件时,或者当你使用其他软件生成要备份的文件列表时。可以使用--files-from参数读取一个需要备份的文件夹列表,例如我把需要备份的多个目录写到D:/includes.txt文件,内容如下:

# 备份以下文件夹D:\myworkD:\mywork2...

然后使用备份命令:

restic -r repo backup --files-from D:/includes.txt

当然也可以把前面的参数加进来,例如你需要从指定文件中读取需要备份的文件夹,同时这些文件夹中有的文件需要排除,那么可以这样使用:

restic -r repo backup --files-from D:/includes.txt --exclude-file=D:/excludes.txt

从快照中还原指定文件或文件夹

快照中包含了多个文件夹,也许你只需还原其中某一个文件或文件夹,那么可以使用--include参数,例如通过上面备份多个路径一节备份了多个目录,在还原时我只想还原D:\mywork2目录,可以这样使用:

restic -r repo restore latest --target D:/mywork_restore --include /D/mywork2

注意:如果你写成--include D:\mywork2将无法还原,原因是该路径在快照中并不存在。可以通过下面的命令来查看快照中有哪些文件。

相应的,如果你想排除某个目录不还原,则可以使用--exclude参数。

列出快照中的文件

restic -r repo ls <snapshotID>

备份标签

快照可以有一个或多个标签,即添加识别信息的短字符串。只需使用以下命令--tag

restic -r repo backup --tag project D:/work

然后执行查看快照命令,可以查看快照的标签。

删除快照

备份空间都是有限的,restic提供了命令删除旧快照。
对于删除操作,需要依次调用两个命令:forget删除快照,以及prune删除快照引用的数据。

删除单个快照

restic -r repo forget <snapshotID>

快照删除后,其文件引用的数据仍存储在存储库中。要清理未引用的数据,需要执行prune命令:

restic -r repo prune

根据策略删除快照

手动删除快照既乏味又容易出错,因此restic允许指定--keep-*参数来设置要保留的快照。例如,您可以定义要保留多少小时、天、周、月和年的快照,并且将删除任何其他快照。

例如保留最近一次快照,其余快照删除:

restic -r repo forget --keep-last 1 --prune

保留最近一个月的快照,其余的删除:

restic -r repo forget --keep-monthly 1 --prune

查看快照大小

查看指定快照大小

restic -r repo forget stats <snapshotID>

查看最近一次快照的大小

restic -r repo forget stats latest

查找文件

在所有快照中查找文件

restic -r repo find "*<keyword>*"

在指定快照中查找文件

restic -r repo find -s <snapshotID> "*<keyword>*"

常见问题

锁(lock)

有时候由于程序卡住了,或者服务器意外关机或重启,会导致备份中断,从而导致出现锁(lock)。这时执行命令时会提示repository is already locked by PID xxxx这种的错误。
解决办法:

restic -r repo unlock

也可以在你要执行的命令后加--nolock,例如查看快照:restic -r repo snapshots --nolock

有关锁的命令

查看有哪些锁:

restic -r repo list locks




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://sg.hqyman.cn/post/9563.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: