restic备份

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

2. 支持类型
本地存储
SFTP
REST Server
Amazon S3
Minio Server
OpenStack Swift
Backblaze B2
Microsoft Azure Blob Storage
Google Cloud Storage
通过 Rclone 挂载的存储 (比如:Google Drive、OneDrive 等)

3. Restic 与 Rclone 区别
3.1 相同点
两者都是基于命令行的开源文件同步和备份工具。
两者都支持将文件备份到本地、远程服务器或对象存储。

3.2 异同
Rclone 面向的是文件同步,即保证两端文件的一致,也可以增量备份。
Restic 面向的是文件备份和加密,文件先加密再传输备份,而且是增量备份,即每次只备份变化的部分。
Rclone 仓库配置保存在本地,备份的文件会保持原样的同步于存储仓库中。
Restic 配置信息直接写在仓库,只要有仓库密码,在任何安装了 Restic 的计算机上都可以操作仓库。
Rclone 不记录文件版本,无法根据某一次备份找回特定时间点上的文件。
Restic 每次备份都会生成一个快照,记录当前时间点的文件结构,可以找回特定时间点的文件。
Rclone 可以在配置的多个存储端之间传输文件。

总的来说,Rclone 和 Restic 各有所长,要根据不同的业务需求选择使用。比如:网站数据的增量备份,用 Resitc 就比较合适。而常规文件的远程备份归档,用 Rclone 就很合适。

4. Restic设计原则
Restic 是一个可以正确进行备份的程序,其设计遵循以下原则:
简单:备份应该是一个顺畅的过程,否则您可能会想跳过它。 Restic 应该易于配置和使用,以便在数据丢失的情况下,您可以直接恢复它。同样,恢复数据不应该很复杂。
快速:用restic备份你的数据应该只受你的网络或硬盘带宽的限制,这样你就可以每天备份你的文件。如果需要太多时间,没有人会进行备份。恢复备份应该只传输要恢复的文件所需的数据,这样这个过程也很快。
可验证:比备份更重要的是恢复,因此restic使您可以轻松验证所有数据是否可以恢复。
安全:Restic 使用加密技术来保证您数据的机密性和完整性。假设存储备份数据的位置不是受信任的环境(例如,系统管理员等其他人能够访问您的备份的共享空间)。 Restic 旨在保护您的数据免受此类攻击者的侵害。
高效:随着数据的增长,额外的快照应该只占用实际增量的存储。更重要的是,在将重复数据实际写入存储后端之前,应该对其进行去重,以节省宝贵的备份空间。

5. 相关术语
Repository:备份期间产生的所有数据都以结构化形式发送并存储在存储库中,例如在具有多个子目录的文件系统层次结构中。存储库实现必须能够完成许多操作,例如列出内容。v0.12.0中已支持的存储服务包括:aws s3,minio server,Wasabi, Aliyun OSS, OpenStack Swift,Backlbaze B2,Azure Blob Storage,Google Cloud Storage,rclone*
Blob:Blob 将多个数据字节与识别信息(如数据的 SHA-256 哈希及其长度),加密的数据块及元数据,其中元数据包括长度,SHA-256 哈希信息。数据块可以存放文件数据(data),也可以存放目录结构数据(tree)。Blob的大小在512KiB到8MiB之间,因此小于512KB的文件不会被拆分。Restic的实现目标是让Blob平均大小为1MiB。
Pack:一个包结合了一个或多个 Blob,例如在单个文件中。Restic中的单个数据文件,包括一个或多个Blob,一旦创建不再修改。
一般只创建不删除,仅prune操作会删除不再被引用的数据。
Snapshot:快照代表在某个时间点已备份的文件或目录的状态。这里的状态是指内容和元数据,如文件或目录及其内容的名称和修改时间。
Storage ID:Pack文件的SHA256哈希值,通过这个ID可以在仓库中加载需要的数据文件。Restic将这个ID作为Pack的文件名,也就是文件的SHA256哈希值。Pack文件名即哈希值的设计也可以方便的检验数据文件是否被改动过。

6.安装restic
6.1 yum安装
yum install yum-plugin-copr
yum copr enable copart/restic
yum install restic

6.2  docker安装
docker pull restic/restic

6.3 源码安装
git clone https://github.com/restic/restic
cd restic
go run build.go

7.sftp主机间备份
7.1 主机间免密钥互信
从主机A备份数据到主机B,需要主机A到主机B免密钥和互信
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@106.53.117.41

7.2 在服务器A创建备份
初始化备份,/data为 B服务器目录。

查看B服务器

7.3 备份操作
执行数据备份
restic -r sftp:root@106.53.117.41:/data backup ./

查看备份
restic -r sftp:root@106.53.117.41:/data snapshots

查看备份内容
restic -r sftp:root@106.53.117.41:/data ls 875a2a32

恢复快照
restic -r sftp:root@106.53.117.41:/data restore 875a2a32 -t ./
restic -r sftp:root@106.53.117.41:/data restore 875a2a32 --target ./

删除备份
restic -r sftp:root@106.53.117.41:/data forget 875a2a32

免密码
上面备份的时候,都需要输入密码,肯定不适合脚本自动备份,所以我们还需要使用--password-file参数来达到自动读取密码的步骤。
bash复制代码#先将密码,比如moerats保存在/root/resticpasswd文本中
echo 'xxzx@789' > /root/resticpasswd
#然后在备份命令中加--password-file参数来读取文本中的密码,这里以sftp为例
restic -r sftp:root@106.53.117.41:/data --verbose backup ./ --password-file /root/resticpasswd

8. 对象存储备份
8.1 阿里云对象存储
$ export AWS_ACCESS_KEY_ID=<YOUR-OSS-ACCESS-KEY-ID>
$ export AWS_SECRET_ACCESS_KEY=<YOUR-OSS-SECRET-ACCESS-KEY>
$ ./restic -o s3.bucket-lookup=dns -o s3.region=<OSS-REGION> -r s3:https://<OSS-ENDPOINT>/<OSS-BUCKET-NAME> init
$ restic -o s3.bucket-lookup=dns -o s3.region=oss-eu-west-1 -r s3:https://oss-eu-west-1.aliyuncs.com/bucketname init
restic -o s3.bucket-lookup=dns -o oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com init

8.2 创建repository
export AWS_ACCESS_KEY_ID=xxxxxxx
export AWS_SECRET_ACCESS_KEY=cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
restic -o s3.bucket-lookup=dns -o s3.region=oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com/xueltestoss init

对象存储上文件

8.3 免密钥
#先将密码,比如moerats保存在/root/resticpasswd文本中
echo 'xxzx@789' > /root/resticpasswd
#然后在备份命令中加--password-file参数来读取文本中的密码,这里以sftp为例

8.4 执行备份
restic -r s3:https://oss-cn-beijing.aliyuncs.com/xueltestoss --password-file /root/resticpasswd backup /data/
其他恢复操作基本上和sftp的一致。

其他
restic 是一个很不错的数据备份方案,rclone是一个不错的数据同步方案,以及minio作为数据存储,集成在一起真的很不错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/802359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【javaWeb 原理篇】底层实现原理(快速学习配置原理,Bean管理)

Spring底层 配置优先级Bean管理获取beanBean的作用域第三方Bean SpringBoot原理起步依赖自动配置自动配置的原理自定义starter 配置优先级 Spring中的配置文件如果配置了相同的内容则根据配置优先级进行配置: application.properties>application.yml>application.yaml …

Shiro

java项目Shiro、SpringSecurity、Sa-Token如何选择&#xff1f; - 知乎 (zhihu.com) Shiro、SpringSecurity、Sa-Token都是Java常用的安全框架 1&#xff09;Spring Security是基于Spring的身份认证(Authentication)和用户授权(Authorization) 框架&#xff0c;提供了一套Web应…

用Python+OpenCV截取视频中所有含有字幕的画面

1、需求背景 有的视频文件的字幕已经压制到了视频的图像中&#xff0c;不能单独提取出字幕文件。网上的 “提取视频字幕” 网站多为提取视频中的字幕文件&#xff0c;而非识别视频图像中的字幕。少数通过OCR技术识别画面中字幕的工具需要在线运行、运行速度较慢&#xff0c;或…

算法训练营第31天|LeetCode 455.分发饼干 376.摆动序列 53.最大子序列和

LeetCode 455.分发饼干 题目链接&#xff1a; LeetCode 455.分发饼干 解题思路&#xff1a; 从孩子小到大&#xff0c;找到最小能满足孩子的饼干&#xff0c;之后看最多能满足几个孩子。 代码&#xff1a; class Solution { public:int findContentChildren(vector<in…

蓝桥杯练习笔记(十八)

蓝桥杯练习笔记&#xff08;十八&#xff09; 一、用辅助栈来优化递归深度过大的问题 输入示例 0000100010000001101010101001001100000011 0101111001111101110111100000101010011111 1000010000011101010110000000001011010100 0110101010110000000101100100000101001001 0…

新增用户信息应该考虑什么?

前置数据校验 1. 用户的信息的合法性&#xff0c;如手机号&#xff0c;邮箱等jsr303检验 2. 用户数据脱敏处理&#xff0c;如密码 3. 短信验证码验证 &#xff08;随机数生成 redis 短信服务&#xff09; 4. 用户信息的账号唯一性校验 5. 给用户授权&#xff0c;如角色或其它…

QT打包生成.exe可执行文件

QT打包生成.exe可执行文件 程序运行图标如何设置快捷方式显示图标QT打包成可执行文件将可执行文件打包成安装包程序运行图标 如何生成如下图标? 首先将你的图标(ico文件)放入当前工程目录,即含有.pro文件的同级目录 右击项目,选择ADD New,选择Qt Resource File, 这是一个…

吴恩达2022机器学习专项课程(一) 5.7 检测梯度下降是否收敛

问题预览/关键词 什么是梯度下降收敛&#xff1f;哪些方法可以检测梯度下降是否收敛&#xff1f;什么是学习曲线&#xff1f;曲线上升代表什么&#xff1f;什么原因造成的&#xff1f;如何检测梯度下降是否收敛&#xff1f;多少次迭代&#xff0c;梯度下降会收敛&#xff1f;什…

C++:初步接触C++(2)

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习C&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 内联函数1.概念2.特性 auto关键字1.auto简介2.auto的使用细则3.auto不能推导的场景 基于范围…

算法刷题记录 Day40

算法刷题记录 Day40 Date: 2024.04.06 kamma 56. 多重背包 #include<bits/stdc.h> using namespace std;int main(){int n, c;while(cin>>c>>n){vector<int> weights(n, 0);vector<int> values(n, 0);vector<int> knums(n, 0);for(int …

一文掌握python面向对象

面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它将现实世界的问题抽象成类和对象,通过封装、继承和多态等特性实现程序设计的模块化与灵活性。Python作为一门支持OOP的高级语言,其面向对象的特性使得代码更加简洁、易读且易于维护。本文旨在全…

RTThread studio 驱动开发

rtthread 驱动使用的两种情况 rtthread studio 自动生成 由 RT Thread Studio 自动生成&#xff0c;无需修改任何文件或者简单定义几个宏即可直接使用的驱动&#xff0c;如 GPIO&#xff0c;UART&#xff0c;I2C&#xff0c;SPI&#xff0c;SDIO 和 ETH 等。 使用 RT-Thread S…

Python - 基础知识

变量 语法&#xff1a; a 10 #意思是创建一个a变量&#xff0c;把10存放到a变量中。 #这里说明一下&#xff0c;#在Python中是是注释符 print(a) #print是打印函数 变量是一个可以发生改变的量&#xff0c;变量是用来区分不同数据的&#xff0c;可以指向一个内存空间&…

如何定位和优化程序CPU、内存等性能之巅

如何定位和优化程序CPU、内存等性能之巅 摘要 性能优化指在不影响系统运行正确性的前提下&#xff0c;使之运行得更快&#xff0c;完成特定功能所需的时间更短&#xff0c;或拥有更强大的服务能力。本文将介绍性能优化的基本概念以及如何定位和优化程序中的CPU、内存和IO瓶颈…

信息泄露漏洞的JS整改方案

引言 &#x1f6e1;️ 日常工作中&#xff0c;我们经常会面临线上环境被第三方安全厂商扫描出JS信息泄露漏洞的情况&#xff0c;这给我们的系统安全带来了潜在威胁。但幸运的是&#xff0c;对于这类漏洞的整改并不复杂。本文将介绍几种可行的整改方法&#xff0c;以及其中一种…

指挥中心控制台厂家定制控制台技术规范全方位指南

指挥中心控制台作为现代化管理的重要组成部分&#xff0c;在整个企业的运行中起着重要作用&#xff0c;为了保证指挥中心的正常运行&#xff0c;控制台的定制不可缺少&#xff0c;那么指挥中心控制台厂家定制控制台技术规范是什么? 1. 结构性能规范&#xff1a;控制台需采用优…

kmeans聚类sklearn实现(Python实验)

Kmeans毫无疑问&#xff0c;好用又“便宜”的算法&#xff0c;经常在很多轻量化场景中实现。所谓的“聚类”&#xff08;Clustering&#xff09;&#xff0c;就是通过欧氏距离找哪些点构成一个簇。假设我们空间中有一堆点&#xff0c;通过肉眼大概可以看出有两簇&#xff0c;思…

jmeter压测websocket协议

一、jmeter 安装websocket插件 1、选项--插件管理 2、搜索WebSocket Samplers by Peter Doornbosch插件 进行安装 3、 重启 jmeter 二、jmeter压测websocket协议实战 2.1、以网站为例&#xff1a; websocket在线测试 1、断开连接 2、打开F12&#xff0c;查看WS数据 3、…

DragonIM龙通讯

前言 龙通讯是一款C/S架构的即时通讯软件&#xff0c;实现了用户注册、登录、好友私聊、群聊&#xff08;文字、表情、文件&#xff09;&#xff0c;群文件上传/下载&#xff0c;群公告&#xff0c;朋友圈&#xff08;可点赞和评论&#xff09;&#xff0c;AI聊天&#xff0c;…

剪切助手-高颜值的跨平台剪切板工具

高颜值的跨平台剪切板工具来了&#xff01;&#xff01; http://t.csdnimg.cn/xKB3B 出于我的一些日常使用需求以及在对比了其他剪切板软件后&#xff0c;我决定做一个跨平台的高颜值剪切板工具《剪切助手》&#xff01; 废话不多说&#xff0c;你可以来这里 下载体验 它&…