使用 Restic 备份数据

2025-01-03 15:34:27
丁国栋
原创 208
摘要:本文主要介绍使用restic备份和恢复数据。如何使用restrict实现异地备份,备份到远程主机或者S3存储。

Restic 设计的原则是简单、快速、可验证、安全和高效,适合个人用户和企业环境中的各种备份需求。


  1. Restic 是一款 GO 语言开发的,开源、免费,快速、高效且安全的跨平台备份工具。
  2. Restic 支持备份增量数据,并且操作十分简单、可以随时备份和恢复备份。
  3. Restic 使用加密技术来保证数据安全性,可以将本地数据加密后传输到指定的存储。
  4. Restic 使用类似Git的版本管理保证数据的完整性,每次备份都是一个快照,可以浏览和恢复到任意版本,支持增量备份和去重,因此可以大大减小备份文件的体积。
  5. Restic 支持大多数主流操作系统,比如:Linux、macOS、Windows 以及一些小众的操作系统,比如:FreeBSD 和 OpenBSD 等。
  6. Restic 支持多种后端存储,可以将备份存储在本地磁盘、SFTP、REST Server、Amazon S3、Minio、OpenStack Swift、Backblaze B2、Microsoft Azure Blob Storage、Google Cloud Storage 等。


Restic 可以通过 SSH 协议将文件存储到其他主机实现异地备份。

Restic 可以通过 S3 协议对接到对象存储实现数据备份和恢复。


案例1:通过restic备份数据到腾讯云对象存储(Cloud Object Storage,COS)

编辑 /etc/profile 文件,添加以下内容


export AWS_ACCESS_KEY_ID=AKIDXXXX
export AWS_SECRET_ACCESS_KEY=lDXXXX
export RESTIC_PASSWORD='passowrd'


初始化仓库

/usr/bin/restic -r s3:https://cos.ap-shanghai.myqcloud.com/BucketName-appid/hostname/data/sites/ init

备份数据

/usr/bin/restic -r s3:https://cos.ap-shanghai.myqcloud.com/BucketName-appid/hostname/data/sites/ backup /data/sites -v --exclude="*.tmp" --exclude=".cache/*" --exclude="*.log"

清理过期的备份

例如仅保留14天可以如下

/usr/bin/restic -r s3:https://cos.ap-shanghai.myqcloud.com/BucketName-appid/hostname/data/sites/ forget --keep-daily 14 --prune -v

案例2:使用restic备份数据到Azure Storage Account


首先需要使用或创建一个Azure Storage Account,使用或创建一个Container,权限设置为Private (no anonymous access) 即可。

要使用resitc备份数据到Azure,尽可能使用较新的restic发布版本,有的发行版自带的restic可能版本较低,无法使用。

例如如果使用版本较低则会提示如下所示的 invalid backend


root@hkweb:~# restic version
restic 0.16.4 compiled with go1.22.2 on linux/amd64
root@hkweb:~# restic -r azure:backup:/hkweb/ init
enter password for new repository: 
enter password again: 
Fatal: create repository at azure:backup:/hkweb/ failed: invalid backend
If the repository is in a local directory, you need to add a `local:` prefix
root@hkweb:~#
安装restic stable的版本
wget https://github.com/restic/restic/releases/download/v0.18.0/restic_0.18.0_linux_amd64.bz2
bzip2 -d restic_0.18.0_linux_amd64.bz2
mv restic_0.18.0_linux_amd64 /usr/bin/restic
chmod +x /usr/bin/restic

配置环境变量存储Azure Storage Account认证信息和restic仓库的密码

export AZURE_ACCOUNT_NAME="xxx" # AZURE_ACCOUNT_KEY 可以在 Azure Storage Account|Access keys 找到,Storage account name
export AZURE_ACCOUNT_KEY="xxx" # AZURE_ACCOUNT_KEY 可以在 Azure Storage Account|Access keys 找到,key1或key2的key
export RESTIC_PASSWORD='password'出

初始化仓库

backup是container名称,/hkweb/ 是contianer中一个目录,这个目录可以不存在,restic会自动创建


restic -r azure:backup:/hkweb/ init

备份

/usr/bin/restic -r azure:backup:/hkweb/ backup /data/sites -v --exclude="*.tmp" --exclude=".cache/*" --exclude="*.log"
/usr/bin/restic -r azure:backup:/hkweb/ backup /data/backup/mysql -v
/usr/bin/restic -r azure:backup:/hkweb/ forget --keep-daily 14 --prune -v


--

发表评论
博客分类