几年来,我使用CrashPlan备份了我家庭的计算机,包括属于我妻子和兄弟姐妹的计算机。 CrashPlan本质上是“始终在线”并且无需考虑就可以进行频繁备份的事实真是太棒了。 此外,进行时间点还原的功能在很多情况下都派上了用场。 因为我通常是家庭的IT人员,所以我喜欢用户界面非常易于使用,以致家庭成员无需我的帮助即可恢复其数据。

最近, CrashPlan宣布将放弃其用户订阅,以专注于其企业客户。 我想这是有道理的,因为它并没有像我这样的人赚很多钱,而且我们的家庭计划正在其系统上使用大量存储。

我决定在合适的替代品中需要的功能包括:

  • 对Linux和Mac的跨平台支持
  • 自动化(因此无需记住单击“备份”)
  • 时间点恢复(或接近的恢复),因此,如果您不小心删除了文件但直到稍后才注意到,该文件仍可恢复
  • 低成本
  • 用于备份集的复制数据存储,因此数据存在多个位置(即,不仅仅备份到本地USB驱动器)
  • 加密以防备份文件落入他人之手

我四处搜寻,并向朋友询问有关CrashPlan的服务。 一个人对Arq感到非常满意,但是没有Linux支持意味着对我没有好处。 Carbonite与CrashPlan类似,但价格昂贵,因为我有多台机器要备份。 Backblaze以合理的价格(每月5美元)提供无限的备份,但是其备份客户端不支持Linux。 BackupPC是一个强有力的竞争者,但是我在记住它之前就已经开始测试我的解决方案。 我看过的其他选项都无法满足我的所有需求。 这意味着我必须找出一种方法来复制CrashPlan为我和我的家人提供的东西。

我知道在Linux系统上备份文件有很多不错的选择。 实际上,我已经使用rdiff-backup至少有十年了,通常用于本地保存远程文件系统的快照。 我希望找到一些可以更好地对重复数据进行重复数据删除的方法,因为我知道某些东西(例如音乐库和照片)将存储在多台计算机上。

我认为我所做的工作非常接近实现我的目标。

我的备份解决方案

最终,我使用了BorgBackup , Rclone和Wasabi云存储的组合 ,我对自己的决定感到很高兴。 博格符合我的所有标准,拥有相当健康的用户和贡献者社区 。 它提供了重复数据删除和压缩功能,并在PC,Mac和Linux上运行良好。 我使用Rclone将Borg主机的备份存储库同步到Wasabi上的S3兼容存储。 任何与S3兼容的存储都可以使用,但我之所以选择Wasabi,是因为它的价格无法与之相比,并且它的性能优于亚马逊的S3。 通过此设置,我可以从本地Borg主机或Wasabi恢复文件。

在我的机器上安装Borg就像sudo apt install borgbackup一样简单。 我的备份主机是一台Linux计算机,始终连接有1.5TB USB驱动器。 如果您没有可用的计算机,则此备份主机可能像Raspberry Pi一样轻巧。 只要确保所有客户端计算机都可以通过SSH到达此服务器,您就可以开始了。

在备份主机上,使用以下命令初始化新的备份存储库:


$  borg init / mnt / backup / repo1 

根据您要备份的内容,您可能选择为每台计算机创建多个存储库,或者为所有计算机创建一个大型存储库。 因为Borg重复数据删除,所以如果您在多台计算机上具有相同的数据,则将所有这些计算机的备份发送到同一存储库可能是有意义的。

在Linux客户端计算机上安装Borg非常简单。 在Mac OS上,XI需要首先安装XCode和Homebrew。 我遵循了如何安装命令行工具的方法,然后使用了pip3 install borgbackup

备份

每台计算机都有一个backup.sh脚本(请参见下文),该脚本由cron定期启动; 它每天只会创建一个备份集,但是同一天尝试几次不会有什么坏处。 笔记本电脑设置为每两个小时尝试一次,因为不能保证一定会在某个时间打开笔记本电脑,但是很可能在其中一个时间内打开笔记本电脑。 通过编写一个始终在运行的守护程序,并在笔记本电脑每次唤醒时触发一次备份尝试,可以改善这一点。 就目前而言,我对事情的运作方式感到满意。

我可以跳过cron作业,并为每个用户提供一个相对简单的方法来使用BorgWeb触发备份,但是我真的不希望任何人都必须记住要备份的内容。 在我迫切需要恢复之前,我往往会忘记单击该备份按钮(这时为时已晚!)。

我正在使用的备份脚本来自Borg 快速入门文档,另外我在顶部添加了一点检查以查看Borg是否已在运行,如果先前的备份运行仍在进行中,它将退出该脚本。 该脚本创建一个新的备份集,并用主机名和当前日期标记它。 然后,它以简单的保留时间表修剪旧的备份集。

这是我的backup.sh脚本:

#!/bin/sh

REPOSITORY =borg @ borgserver: / mnt / backup / repo1

#Bail if borg is already running, maybe previous run didn't finish
if pidof -x borg >/ dev / null; then
echo "Backup already running"
exit
fi

# Setting this, so you won't be asked for your repository passphrase:
export BORG_PASSPHRASE = 'thisisnotreallymypassphrase'
# or this to ask an external program to supply the passphrase:
export BORG_PASSCOMMAND = 'pass show backup'

# Backup all of /home and /var/www except a few
# excluded directories
borg create -v --stats                          \
$REPOSITORY :: '{hostname}-{now:%Y-%m-%d}'    \
/ home / doc                                   \
--exclude '/home/doc/.cache'                \
--exclude '/home/doc/.minikube'             \
--exclude '/home/doc/Downloads'             \
--exclude '/home/doc/Videos'                \
--exclude '/home/doc/Music'                 \

# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-' prefix is very important to
# limit prune's operation to this machine's archives and not apply to
# other machine's archives also.
borg prune -v --list $REPOSITORY --prefix '{hostname}-' \
--keep-daily = 7 --keep-weekly = 4 --keep-monthly = 6


备份运行的输出如下所示:

------------------------------------------------------------------------------
Archive name: x250- 2017 - 10 -05
Archive fingerprint: xxxxxxxxxxxxxxxxxxx
Time ( start ) : Thu, 2017 - 10 -05 03:09:03
Time ( end ) :   Thu, 2017 - 10 -05 03: 12 : 11
Duration: 3 minutes 8.12 seconds
Number of files: 171150
------------------------------------------------------------------------------
Original size      Compressed size Deduplicated size
This archive:               27.75 GB             27.76 GB 323.76 MB
All archives:                3.08 TB              3.08 TB 262.76 GB

Unique chunks         Total chunks
Chunk index:                 1682989             24007828
------------------------------------------------------------------------------
[ ... ]
Keeping archive: x250- 2017 -09- 17                      Sun, 2017 -09- 17 03:09:02
Pruning archive: x250- 2017 -09- 28                      Thu, 2017 -09- 28 03:09:02


将所有计算机备份到主机后,我将按照说明安装预编译的Rclone二进制文件并将其设置为访问我的Wasabi帐户。

该脚本每天晚上运行,以同步对备份集的任何更改:

#!/bin/bash
set -e

repos = ( repo1 repo2 repo3 )

#Bail if rclone is already running, maybe previous run didn't finish
if pidof -x rclone >/ dev / null; then
echo "Process already running"
exit
fi

for i in " ${repos[@]} "
do
#Lets see how much space is used by directory to back up
#if directory is gone, or has gotten small, we will exit
space = ` du -s / mnt / backup / $i | awk '{print $1}' `

if ( ( $space < 34500000 ) ) ; then
echo "EXITING - not enough space used in $i "
exit
fi

/ usr / bin / rclone -v sync / mnt / backup / $i wasabi: $i >> / home / borg / wasabi-sync.log 2 >& 1
done


备份集与Rclone到Wasabi的第一次同步花了几天时间,但是它大约有400GB的新数据,而且我的出站连接不是非常快。 但是每日增量很小,仅需几分钟即可完成。

恢复文件

恢复文件并不像使用CrashPlan那样容易,但是相对简单。 最快的方法是从Borg备份服务器上存储的备份中还原。 以下是一些用于还原的示例命令:

#List which backup sets are in the repo
$ borg list borg @ borgserver: / mnt / backup / repo1
Remote: Authenticated with partial success.
Enter passphrase for key ssh: // borg @ borgserver / mnt / backup / repo1:
x250- 2017 -09- 17                      Sun, 2017 -09- 17 03:09:02
#List contents of a backup set
$ borg list borg @ borgserver: / mnt / backup / repo1::x250- 2017 -09- 17 | less
#Restore one file from the repo
$ borg extract borg @ borgserver: / mnt / backup / repo1::x250- 2017 -09- 17 home / doc / somefile.jpg
#Restore a whole directory
$ borg extract borg @ borgserver: / mnt / backup / repo1::x250- 2017 -09- 17 home / doc

如果本地Borg服务器或保存所有备份存储库的USB驱动器发生故障,我也可以轻松地直接从Wasabi恢复。 如果计算机安装了Rclone,则可以使用rclone mount挂载远程存储桶,就像它是本地文件系统一样:

#Mount the S3 store and run in the background
$ rclone mount wasabi:repo1 / mnt / repo1 &
#List archive contents
$ borg list / mnt / repo1
#Extract a file
$ borg extract / mnt / repo1::x250- 2017 -09- 17 home / doc / somefile.jpg

运作方式

现在,我已经使用这种备份方法了几周了,可以说我对此非常满意。 当然,设置一切并使其运行比仅安装CrashPlan要复杂得多,但这就是滚动自己的解决方案和使用服务之间的区别。 我将必须仔细观察以确保备份继续运行,并且数据已正确同步到Wasabi。

但是,总的来说,用真正合理的价格提供可比较的备份覆盖率的东西替换CrashPlan确实比我预期的要容易一些。 如果您有改善的空间,请告诉我。

它最初在 Local Conspiracy 上发布,并经许可重新发布。

翻译自: https://opensource.com/article/17/10/backing-your-machines-borg

如何使用BorgBackup,Rclone和Wasabi云存储推出自己的备份解决方案相关推荐

  1. 政务云存储 备份方案_在线云存储是否比远程备份解决方案更好?

    政务云存储 备份方案 Choosing a backup solution for business can lead you down one of two roads, cloud storage ...

  2. 基于云存储网关的Veeam备份归档上云方案

    前言 面对数据可靠性和合规性要求的不断增长,只备份一份数据已经不能满足用户对于数据可靠性的需求.传统备份厂商的异地备份方案是将用户生产环境里的数据备份至不同机柜或者异地机房来保护数据,规避单机房存在的 ...

  3. 混合云存储跨云灾备方案之跨云容灾

    前面两篇文章介绍了基于阿里云备份的跨云备份和云存储网关的跨云复制,两者主要是解决文件粒度的备份与恢复问题.如果用户需要保护一个云上的数据库应用,而不仅仅是数据库的数据文件:如果用户需要保护整个云主机, ...

  4. 混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案

    前言 阿里云对象存储(OSS)用户众多.很多用户因为业务或者合规性需求,需要对OSS内的数据做备份,无论是线上备份,还是线下备份.用户可以选择使用OSS的开放API,按照业务需求,做数据的备份,也可以 ...

  5. 全球最佳15个免费云存储服务推荐

    据国外媒体报道,对一般用户来说,除非需要1TB以上超大容量存储空间,很少人愿意付费获得一个云存储.其实有很多云存储厂商,都会提供一些小容量的免费云存储给一般用户,对只需要存储一些照片.文档的用户来说, ...

  6. 混合云存储跨云灾备方案之跨云复制

    摘要: 混合云容灾实现了跨云/多云场景中的应用和整机的灾备和恢复.支持整机和主流的企业应用,如各版本的Oracle(Oracle RAC近期即将支持)和SQL Server等.先进的压缩重删服务节约了 ...

  7. SDS分类图的更新 腾讯云存储深度解读

    [编者Peter Ye按] 本篇文章的主体部分是腾讯云美女技术专家Vivian Lei在2017年11月8日第二届日知录企业存储峰会上的演讲<EB级别云存储是如何涨成的?>,本篇文章在日知 ...

  8. 基于云存储的个人笔记项目

    GitHub下载地址:https://github.com/mdxiaohu/cloudNotes 云存储通过大数据分布式存储解决方案解决了笔记信息量膨胀的问题,并且通过分布式搜索引擎服务以及数据分析 ...

  9. 云存储关键技术研究与发展应用

    1 云存储的定义 1.1 定义1 云存储系统以传统的分布式存储技术为基础,利用高吞吐率网络技术为依托,一方面高效地整合管理网络存储资源,另一方面对外提供友好的接口,发布便捷的网络数据存储服务 1.2  ...

最新文章

  1. 博客项目之设计访客统计
  2. Lightroom Classic CC8.2安装教程 IT宝盒 10-14 20:32
  3. 产品经理如何开始数据分析之路?(基础知识)
  4. 操作系统——MiniDos
  5. 阿里云 超级码力在线编程大赛初赛 第3场 题目2. 房屋染色(DP)
  6. CTex + Texmaker
  7. 前谷歌资深架构师:真正搞懂spring底层到底有什么好处?
  8. 当网页数据到达用户计算机,当网页数据到达用户计算机时,数据进行转换步骤是()...
  9. [洛谷P1908] 逆序对|归并排序|树状数组
  10. 2019年6月多校联训b层——搜索算法 Problem A 宽搜 营救
  11. python的文本编辑geny_android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)...
  12. 【算法】02 SCE-UA简介及源代码
  13. 最全最好的Tracker地址目录
  14. BitTorrent 原理简介
  15. 设置笔记本电脑插入USB鼠标时,自动禁用触摸板
  16. 结构化英语查询语言SQL
  17. 浅析大数据前景及就业方向
  18. matlab 截屏为什么没有呢,录屏没有呀!什么都没有,只有截屏,原来明明有的,现在不知道为什么就突然没有了(手机华为青春版)...
  19. DAB-Deformable-DETR源码学习记录之模型构建(二)
  20. PS2 键盘在win10下开机过程 收发的数据

热门文章

  1. 使用JDBC来实现一个简单的增删改查
  2. 2019年创业融资去哪个平台好?创成汇
  3. java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \ \' \\ )...
  4. #从零开始学Swift2.0# No.4 枚举, 元组, 数组和字典
  5. Python str字符串常用到的函数
  6. ORACLE-016:ora-01720 授权选项对于'xxxx'不存在
  7. 实现 Win32 程序的消息映射宏(类似 MFC )
  8. webrtc 渲染_webRTC 中 timing 信息的使用
  9. 服务器500g硬盘分区方案,win7500g硬盘分区方案
  10. hadoop最新稳定版本dkhadoop版本选择介绍