我完全知道像这样的问题已经被问过多次。然而,由于阅读各种备份工具的大量文档并不能回答我的所有问题,我认为在这里描述我的场景以获得一些输入是很好的。
我想制定适合我的需求的备份策略。以下是要求的简要概述:
- 开源软件
- 命令行支持(不仅仅是 GUI)
- 我想从多个设备进行备份和恢复。 (所有设备都运行linux)
- 我希望能够备份特定文件/文件夹,并忽略其他文件/文件夹
- 我希望能够备份到多个目的地,例如:
- 外接硬盘
- 一些场外服务器(以防我的房子被烧毁)
- 我想自动化备份,例如使用 cron
- 我希望备份可以正确加密
- 我希望对备份进行重复数据删除,因此只存储与上一个备份的增量。
- 从备份恢复时,我希望能够直接使用恢复的备份作为备份新更改的新点。 (想想 git-repository,您可以在将存储库克隆到新系统后直接推送新的更改)。
经过一些研究后,有两个计划在大多数情况下似乎都很合适:
使用 borgbackup 我发现两个问题:
- 我可以通过两种方式恢复文件:熔断安装备份或直接提取备份。但是,在恢复时,我总是只获取文件。当我将备份恢复到新系统时,我必须重新设置所有存储库,以便从新主机运行新备份?那是非常不方便的。 (再次强调:我希望有类似 git 存储库的行为,其中恢复的数据/存储库可以直接用于备份(推送)新数据。)
- 我认为不可能为备份指定多个端点。例如,我可以将数据备份到远程服务器,但无法同步到外部硬盘。 (看:https://borgbackup.readthedocs.io/en/stable/faq.html#can-i-backup-from-multiple-servers-into-a-single-repository)。在我看来,冷存储备份(例如外部 HDD)似乎不太适合 borg。
与休息:
- 本质上与博格相同。
所以,我的问题是,如何实现适用于上述场景的备份解决方案。 borg 和 Restic 是适合这里工作的工具吗?如果是这样,我该如何处理我所描述的问题?如果没有的话,还有其他更好的备份软件吗?
答案1
克隆我认为可以满足您的所有要求:
- 开源软件
- 命令行支持
- 备份到多个设备并从多个设备恢复(支持多个操作系统)
- 备份特定文件/文件夹,并忽略其他文件/文件夹
- 备份到多个目标(只是一次运行中不能多个,必须与 xargs 或 GNU Parallel 结合才能实现这一点)
- 自动备份,例如使用 cron
- 备份可以加密
- 仅存储与先前备份的增量(=> 增量)
- 使用恢复的备份作为新的备份目标
也许你想尝试rclone sync src dest --backup-dir incr$(date "+%Y%m%d.%H%M%S")
正如您提到的 git:你肯定也想看看git 附件。上述几点也正是为此而主张的。 (说实话:虽然我从多年的个人经验中知道 rclone 坚如磐石(到目前为止从未让我失望过),但迄今为止我从未尝试过 git-annex,尽管它的功能看起来非常有趣)
一般来说,这实际上取决于您的环境。实际的问题是:您是否要建立一个解决方案作为多个用户和大量机器的连续服务,然后更好地使用一个完整的系统,如建议的那样https://unix.stackexchange.com/a/683353/118985并创建专用的备份环境。
但是,如果那东西是针对您的私人系统并且只覆盖几台计算机(我从您上面的写作中怀疑这一点),则所需的管理工作和资源要小得多,并且您会更快并且体验更少挫折让系统与 rclone 一起运行:它只是一个要放入搜索路径中的可执行文件,并且 - 在大多数情况下,使用加密或云备份 - 主目录中的一个小配置文件,由程序创建)。
答案2
设置两个linux(即centos)系统并使用rsnapshot
- 开源软件
- 是的
- 命令行支持(不仅仅是 GUI)
- 没有 GUI,rsnapshot 是一个简单的 Perl 脚本,所有内容都在
/etc/rsnapshot.conf
- 没有 GUI,rsnapshot 是一个简单的 Perl 脚本,所有内容都在
- 我想从多个设备进行备份和恢复。 (所有设备都运行linux)
- 可以做
- 我希望能够备份特定文件/文件夹,并忽略其他文件/文件夹
- 可以做
- 我希望能够备份到多个目的地,例如:外部硬盘或一些异地服务器(以防我的房子被烧毁)
- 可以做,显然需要互联网连接,以及其他地方可以接收的一些备份系统
- 我想自动化备份,例如使用 cron
- 无论您希望备份发生的频率如何,都可以从 cron 中调用 rsnapshot,非常简单
- 我希望备份可以正确加密
- 阅读 rsnapshot 网站,不确定这个。我相信您和备份服务器之间的 SSH 连接将是第一级加密;如果您需要备份服务器上的所有内容“加密”,那么那就是另一回事了,而且不一定是 rsnapshot 的工作。
- 我希望对备份进行重复数据删除,因此只存储与上一个备份的增量。
- 阅读 rsnapshot 网站,如果您配置 rsnapshot 进行增量备份,它可能会提供可接受的解决方案。您可能可以在 Linux 中的备份服务器上运行其他软件来完成重复数据删除以满足您的需求。
- 从备份恢复时,我希望能够直接使用恢复的备份作为备份新更改的新点。 (想想 git-repository,您可以在将存储库克隆到新系统后直接推送新的更改)。
- rsnapshot 是基于
rsync
这样的,所以你的备份服务器上会有一个与主服务器上完全相同的文件夹结构,然后如果你在备份服务器上配置 NFS 或任何类似的东西,你可以将该备份文件夹结构导出回主服务器(或任何其他)要使用的服务器。
- rsnapshot 是基于
我在一台有 16 个驱动器托架的服务器上运行 rsnapshot,前 7 个驱动器托架是 raid-5 安装为 /data。第二个 7 个托架以 raid-5 方式安装为 /backup,仅允许 root 访问。我 nfs 将 /backup 以只读方式导出到本地主机(只是我的服务器),并将 /backup 以只读方式安装在用户可以访问的 /backup2 文件夹下。文件夹/文件权限是数据权限的镜像,因此,如果用户有权限这样做,当他们不小心删除了 /data 下的原始文件时,他们可以在 /backup2 下导航以复制出他们想要的任何内容。在您的情况下,需要配置第二个系统来接收 rsnapshot 备份。网上有很多关于 rsnapshot 的文章。
- https://troy.jdmz.net/rsnapshot/index.html
- https://rsnapshot.org/
- https://rsnapshot.org/downloads/
rsnapshot-1.4.4.tar.gz
答案3
我的建议是使用杆骨。我已经按照您所需的具体要求,大规模地设置了它。虽然一开始可能有点难以理解,但设置完成后您会非常满意。社区也相当不错。不要在增强版 rsync 克隆上浪费时间。