一款开源免费且快速,高效和安全的跨平台备份程序:Restic使用教程

Restic是使用Golang写的一款开源免费且快速,高效和安全的跨平台备份程序,可以存储在本地,云存储服务或远程文件服务器上,并且使用加密技术来你的数据安全性和完整性,同样支持增量备份,可随时备份和恢复备份。并支持3种主要的操作系统LinuxmacOSWindows及一些较小的操作系统FreeBSDOpenBSD等。

支持的存储:

 

本地存储

 

SFTP

 

REST Server

 

Amazon S3

 

Minio Server

 

OpenStack Swift

 

Backblaze B2

 

Microsoft Azure Blob Storage

 

Google Cloud Storage

 

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

安装

Github地址:https://github.com/restic/restic

Restic可以直接通过系统软件包安装,不过版本好像都有点旧,这里就选择最新的二进制方式安装。

二进制下载地址→传送门,先根据自己的架构选择对应的最新版本,这里只说Linux系统,Windows系统直接下载解压就行了。

使用命令:

 

#32位下载

 

wget https://github.com/restic/restic/releases/download/v0.9.4/restic_0.9.4_linux_386.bz2

 

#64位下载

 

wget https://github.com/restic/restic/releases/download/v0.9.4/restic_0.9.4_linux_amd64.bz2

   
 

#解压并删除压缩包

 

bzip2 -d restic*.bz2 && rm -rf restic*.bz2

 

#授权

 

chmod +x restic*

 

#移动二进制文件

 

mv restic* /usr/local/bin/restic

 

#查看版本

 

restic version

之后可以直接使用restic self-update命令升级二进制文件。

配置存储库

安装好了Restic后,还需要配置下存储方式,也就是你想备份到服务器本地,还是其它远程服务上。以下配置过程中都会要你输入密码,别忘了,不然就找不回来了。

这里只说常用的本地、sftprclone备份方式,其它的远程库配置可以看下官方文档→传送门。

1、备份到本地

 

#备份到本地/backup文件夹

 

restic init --repo /backup

2、SFTP方式
该方法适合将文件备份到另一台VPS服务器。首先我们需要在要备份的服务器上生成个公钥再复制给另一台远程服务器,这样就可以实现免密码登录了。

提示:以下将需要备份的服务器称为A,备份到远程文件服务器B。

先使用SSH客户端登录服务器A,使用命令:

 

cd ~

 

ssh-keygen -t rsa

这里会要你命名密匙名称(这里建议使用默认名称),然后连续按几次Enter,这时候会在/root/.ssh文件夹生成2ssh密钥,然后我们查看公钥id_rsa.pub

cat ~/.ssh/id_rsa.pub

复制好公钥。

再使用SSH登录服务器B,使用命令:

 

#复制服务器A中的id_rsa.pub值

 

echo 'xxxxxxx' >> ~/.ssh/authorized_keys

如果提示No such file or directory错误信息,先使用mkdir ~/.ssh命令,再重新使用上面的命令。然后免密登录就配置完成了。

然后在服务器A上使用命令:

 

#root为服务器B的用户名,1.1.1.1为服务器ip,端口默认为22,/backupb为服务器B上的存储文件夹,如果不存在则会自动创建

 

restic -r sftp:root@1.1.1.1:/backupbs init

如果服务器B端口非22,就需要配置下了,在服务器A~/.ssh目录创建config文件,使用命令:

nano ~/.ssh/config

新增以下参数:

 

Host 1.1.1.1

 

User root

 

Port 2222

从上至下的参数为服务器Bip、用户名和端口。然后重启ssh

 

/etc/init.d/sshd restart #centos系统

 

/etc/init.d/ssh restart #debian、ubuntu系统

此时可以直接在服务器A上使用新的命令:

 

#参数详解可以参考上面

 

restic -r sftp:1.1.1.1:/backupb init

此时输入2次密码就完成了。

3、Rclone方式
先在服务器上安装Rclone,并配置Rclone,方法参考:

 

#使用rclone挂载OneDrive网盘

 

https://www.moerats.com/archives/491/

 

#使用rclone挂载Google Drive网盘

 

https://www.moerats.com/archives/481/

只需要完成配置环节,启动的话,就交给Restic了。

再使用命令:

 

#比如rclone配置名为RATS,本地文件夹为/backup,如果该文件夹不存在则会自动创建

 

restic -r rclone:RATS:/backup init

开始备份

提示:以下均将/rats文件夹的文件备份到/backup存储文件夹,也就是上面设置的。

使用命令:

 

#该命令是备份/rats整个文件夹,如果备份单个文件,比如/rats.zip,那后面就改成/rats.zip

   
 

#本地备份

 

restic -r /backup --verbose backup /rats

 

#sftp备份

 

restic -r sftp:1.1.1.1:/mbackup --verbose backup /rats

 

#rclone备份

 

restic -r rclone:RATS:/backup --verbose backup /rats

   
 

#对于rclone,还可以加一些rclone参数优化下,比如使用--bwlimit限制传输带宽

 

restic -o rclone.program="/usr/bin/rclone" \

 

-o rclone.args="serve restic --stdio --bwlimit 1M --verbose" \

 

-r rclone:RATS:/backup backup /rats

运行命令后会要求你输入密码,然后备份后会在存储文件夹的snapshots目录生成一个十六进制的文件。如果备份数据出现重复,则会自动跳过。如果文件夹有文件出现修改(包括修改时间)才会进行下一次备份。

这里如果使用rclone挂载Gdrive的,建议自己申请一个api,博主测试了下,会出现一堆 Error 403: Rate Limit Exceeded, rateLimitExceeded错误。申请教程→传送门。

你还可以用参数排除不想备份的文件夹或者文件,命令示例:

 

--exclude 指定一次或多次以排除一个或多个项目

 

--exclude-caches 指定一次以排除包含特殊文件的文件夹

 

--exclude-file 指定一次或多次以排除给定文件中列出的项目

 

--exclude-if-present 如果文件夹内容包含给定文件,则指定一次或多次排除文件夹内容

具体用法可以参考下官方文档→传送门。

restic还支持命令传输,比如备份数据库文件夹,这里以sftp为例,其它方式自行修改-r后面参数,使用命令:

 

#比如将Typecho数据库备份到远程sftp,并命名typecho.sql,其它远程库就自己模仿

 

mysqldump -uroot -ppasswd typecho | restic -r sftp:1.1.1.1:/moerats backup --stdin --stdin-filename typecho.sql

备份好了后,可以使用命令查看备份文件,使用命令:

 

#查看所有备份文件

 

restic -r sftp:1.1.1.1:/moerats snapshots

 

#大概会输出以下信息

 

ID Time Host Tags Paths

 

---------------------------------------------------------------------

 

ef5ff5fe 2019-02-25 17:03:57 Rats /moerats

 

40724b53 2019-02-25 17:10:06 Rat /rats

 

---------------------------------------------------------------------

   
 

#只查看/moerats文件夹的备份文件

 

restic -r sftp:1.1.1.1:/moerats snapshots --path="/moerats"

 

#大概会输出以下信息

 

ID Time Host Tags Paths

 

---------------------------------------------------------------------

 

ef5ff5fe 2019-02-25 17:03:57 Rats /moerats

 

---------------------------------------------------------------------

   
 

#只查看主机名为Rat的备份文件

 

restic -r sftp:1.1.1.1:/moerats snapshots --host Rat

 

#大概会输出以下信息

 

ID Time Host Tags Paths

 

---------------------------------------------------------------------

 

40724b53 2019-02-25 17:10:06 Rat /rats

 

---------------------------------------------------------------------

这里没有使用标签参数,所以tags那里是空的,不过我们可以在备份的时候加入标签参数--tag,使用命令:

 

#如果想给备份文件加入site标签

 

restic -r sftp:1.1.1.1:/moerats --verbose backup /rats --tag site

   
 

#如果你想加入更多标签来更详细的区分备份,那就在后面多加几个--tag参数,这样查看备份的时候就可以看到tags了

最后还可以直接使用命令删除备份文件,使用命令:

 

#比如删除bcde备份文件

 

restic -r sftp:1.1.1.1:/moerats forget bcde

恢复备份

如果我们需要将远程存储文件夹的abcd备份文件恢复到本地/rats文件夹,这里以sftp为例,其它方式自行修改-r后面参数。

使用命令:

 

restic -r sftp:1.1.1.1:/moerats restore abcd --target /rats

   
 

#你也可以直接使用latest来恢复最后一次的备份文件

 

restic -r sftp:1.1.1.1:/moerats restore latest --target /rats

   
 

#如果你只想备份其中的一个文件夹/文件,使用--include参数,后面接文件/文件夹;如果不想备份其中的文件,那就使用--exclude参数即可,记得使用备份时文件的绝对路径。

脚本备份

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

使用命令:

 

#先将密码,比如moerats保存在/root/resticpasswd文本中

 

echo 'moerats' > /root/resticpasswd

 

#然后在备份命令中加--password-file参数来读取文本中的密码,这里以sftp为例

 

restic -r rclone:RATS:/moerats --verbose backup /rats --password-file /root/resticpasswd

然后此时就不需要你再输入密码了,这时候就方便自己写脚本自动备份文件了。

然后最后博主也没过多的研究,只是大概的了解下,有兴趣的可自己仔细研究下官方文档→传送门。

一款开源免费且快速,高效和安全的跨平台备份程序:Restic使用教程相关推荐

  1. 一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)

    在目前的软件项目中,都会较多的使用到对文档的操作,用于记录和统计相关业务信息.由于系统自身提供了对文档的相关操作,所以在一定程度上极大的简化了软件使用者的工作量. 在.NET项目中如果用户提出了相关文 ...

  2. 一款开源免费的任务日程管理工具ToDoList

    推荐给大家一款开源免费的任务日程管理工具ToDoList,是适合职场人尤其是程序员的经典任务管理软件,使用好的话会让大家在工作中事半功倍. 1.软件介绍 ToDoList是一款小众但功能强大的开源免费 ...

  3. 五款开源免费的建站系统推荐

    最近研究了下开源的建站系统,推荐5款国内的吧,都有免费版本,有需要可以去试试. ECTouch ECTouch是一款开源免费的移动商城网店系统.能够帮助企业和个人快速构建手机移动商城并减少二次开发带来 ...

  4. qt 获取本机的wifi密码_还在记密码?这款开源免费的账号密码管理神器赶紧收了...

    工作中涉及到得账号密码,你是怎么记录得?如果是文档word或者excel记录,那么回非常麻烦,每次还得打开.如果是浏览器自己记录,如果更新密码,又记不得.尴尬! 今天大卫给大家推荐一款开源免费得账号密 ...

  5. laravel开源php棋牌,Simpla: Simpla 是基于 Laravel 的 PHP 框架进行开发的一款开源免费的内容管理系统(CMS)...

    ###Simpla Simpla是基于Laravel的PHP框架进行开发的一款开源免费的内容管理系统(CMS),基于GUN开源协议. Simpla实现了一些基础功能,采用主题和模块的方式进行功能上的扩 ...

  6. 一款开源免费图床聚合平台 ImageHosting

    一款开源免费图床聚合平台 ImageHosting https://github.com/jingxiang/imagehosting 转载于:https://www.cnblogs.com/kalm ...

  7. php个人笔记系统 开源,Github精选!一款开源免费的轻量级笔记软件

    更多精彩内容,请关注公众号[平凡而诗意] ​ 笔记软件是工作和学习过程中经常会用到的软件,会议纪要.工作事项.待办,都需要用到笔记软件,这样能够明确做事的先后顺序,能够提高做事的效率. 笔记软件数不胜 ...

  8. 介绍一款开源免费的16进制编辑器wxMEdit,为开源软件加油

    对于程序员来说,16进制编辑器是工具箱中必不可少的一件.拿出来用的时候不一定很多,但如果需要时找不到一件就很恼火了. 名气比较大的ultraEdit,winHex功能还是不错,可惜不免费. 最近在网上 ...

  9. 还在为不想运动而发愁吗——一款开源免费的运动记录项目

    还在为不想运动而发愁吗--一款开源免费的运动记录项目 前言 现在信息日益增长.时间日益碎片化的时代,每个人都很难去坚持去一直认真做一件事情. 就拿跑步来说,许多人都是三分钟热度,根本坚持不下来.许多程 ...

最新文章

  1. 个人学习某个系统或平台的3问式的整理和细化指引
  2. Lead time 在ERP 中怎么填
  3. 《刺客信条:英灵殿》全面分析:浅谈公式化开放世界
  4. 发现数据对象 -- 数据库开发的关键
  5. 有关堆栈溢出(in vs 2005)的读书笔记--堆栈中 申请大数组
  6. 李涓子 | 机器智能加速器:大数据环境下知识工程的机遇和挑战
  7. 获取list泛型_泛型
  8. 为CListBox加上智能水平滚动条
  9. vscode 经常弹出unins000.exe报错,尝试在目标目录创造文件时发生错误 重试 跳过这个文件 关闭安装程序
  10. FileUpload类中FileUpload1.FileName和FileUpload1.PostedFile.FileName的区别
  11. 【线性代数笔记】矩阵的合同关系
  12. 为什么现在的程序员那么卑微?青出于蓝而胜于蓝啊
  13. 一、爬虫 - 新浪爱问共享资源全下载之解决方案
  14. 网站为什么要备案?网站备案流程是什么?
  15. Android 11.0 12.0SystemUI修改状态栏电池图标样式为横屏显示
  16. 从入门到实战,一文带你彻底读懂Vue3.0
  17. Spring Security 如何防止 Session Fixation 攻击
  18. Hash校验工具、MD5 SHA1 SHA256命令行工具
  19. allegro cadence PCB中出光绘文件遇到database has errors:artwork generation cancled.please run dbdoctor问题的解决办法
  20. 【pytorch】ResNet18、ResNet20、ResNet34、ResNet50网络结构与实现

热门文章

  1. excel c# 输出
  2. PHP类: SEO必备的伪原创工具 (文章重写)
  3. Ubuntu 15 安装Chromium浏览器并添加Flash插件Pepper Flash Player
  4. DOM Element节点类型详解
  5. css 多栏文字流 css two columns text flow
  6. 机器学习降维算法一:PCA (Principal Component Analysis)
  7. 2016校招真题编程练习——微信红包(腾讯)
  8. Shell——传递参数
  9. linux 命令行使用wget下载百度云资源
  10. myeclipse创建项目 我们的第一个代码