跨平台数据备份工具之restic详解

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动。

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

一 背景

Restic 是一款 GO 语言开发的开源免费且快速、高效和安全的跨平台备份工具。Restic 使用加密技术来保证你的数据安全性和完整性,可以将本地数据加密后传输到指定的存储。

Restic 同样支持增量备份,可随时备份和恢复备份。Restic 支持大多数主流操作系统,比如:Linux、macOS、Windows 以及一些较小众的操作系统 FreeBSD 和 OpenBSD 等。

二 restic简介

2.1 restic 支持类型

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

2.2 Restic 与 Rclone 区别

2.2.1 相同点

  • 两者都是基于命令行的开源文件同步和备份工具。
  • 两者都支持将文件备份到本地、远程服务器或对象存储。

2.2.2 异同

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

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

2.3 Restic设计原则

Restic 是一个可以正确进行备份的程序,其设计遵循以下原则:

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

2.4 相关术语

  • 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文件名即哈希值的设计也可以方便的检验数据文件是否被改动过。三 安装restic
    ==========

3.1 yum安装

yum install yum-plugin-copr
yum copr enable copart/restic
yum install restic 

3.2 docker安装

docker pull restic/restic 

更多信息可参考:github.com/Lobaro/rest…

3.3 源码安装

$ git clone https://github.com/restic/restic
 $ cd restic
 $ go run build.go 

3.4 配置自动补全

$ sudo ./restic generate --bash-completion /etc/bash_completion.d/restic 

四 实战

将保存备份的地方称为“存储库”。本章解释了如何创建(“ init”)这样的存储库。存储库可以存储在本地,也可以存储在远程服务器或服务器上。

4.1 sftp主机间备份

4.1.1 主机间免密钥互信

从主机A备份数据到主机B,需要主机A到主机B免密钥和互信

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

4.1.2 在服务器A创建备份

初始化备份,/data为 B服务器目录。

查看B服务器

4.1.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 

4.1.4 免密码

上面备份的时候,都需要输入密码,肯定不适合脚本自动备份,所以我们还需要使用--password-file参数来达到自动读取密码的步骤。

#先将密码,比如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 

4.2 对象存储备份

支持基于s3协议的后端对象存储,例如minio或者腾讯/阿里对象存储

4.2.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 
  • 创建repository
export AWS_ACCESS_KEY_ID=LTAIxxxxxxxdZa9
export AWS_SECRET_ACCESS_KEY=XvHxxxxxxxxxxxxxxxxxJt3wb7
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 

对象存储上文件

  • 免密钥
#先将密码,比如moerats保存在/root/resticpasswd文本中
echo 'xxzx@789' > /root/resticpasswd
#然后在备份命令中加--password-file参数来读取文本中的密码,这里以sftp为例 
  • 执行备份
restic -r s3:https://oss-cn-beijing.aliyuncs.com/xueltestoss --password-file /root/resticpasswd backup /data/ 

其他恢复操作基本上和sftp的一致。

其他

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

参考文章

其他

「欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章」。学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据标注工具是指用于对数据进行标注的软件工具,常用于机器学习、自然语言处理等领域中的数据集准备阶段。下面我将简单介绍一下数据标注工具的使用步骤。 1. 安装数据标注工具 首先需要下载并安装数据标注工具,比如常用的有LabelImg、Labelbox、RectLabel等。 2. 导入数据 打开数据标注工具后,需要将要标注的数据导入到工具中。可以通过直接拖拽文件到工具界面或者选择导入文件进行导入。 3. 标注数据 数据导入后,就可以开始对数据进行标注了。一般情况下,需要选择标注框、标注点、标注线等不同的标注方式,具体标注方式根据不同的数据类型而定。例如,对于图像数据,可以选择标注框,在目标上框出一个矩形或者多边形,标注出目标的位置和大小;对于文本数据,可以选择标注关键词、实体等信息。 4. 保存标注数据 完成标注后,需要将标注数据保存下来,以便后续使用。可以选择将标注数据保存为特定格式的文件,如XML、JSON、CSV等。 5. 标注数据的质量控制 在标注数据的过程中,需要进行标注数据的质量控制。可以通过对标注数据进行复查、修改、纠错等方式来确保标注数据的质量。 以上是数据标注工具的使用步骤,需要注意的是,在标注数据的过程中需要确保标注的准确性和一致性,以便后续使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值