如何在 Linux 上使用 restic 备份程序如何在 Linux 上使用 restic 备份程序如何在 Linux 上使用 restic 备份程序如何在 Linux 上使用 restic 备份程序
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 restic 备份程序

使用 restic 备份程序保护您宝贵的文件和不可替代的照片。它速度快,经过加密,您可以直接从 Linux 命令行使用它。以下是设置方法。

备份的价值

所有硬件都有有限的寿命。机械硬盘驱动器 (HDD) 和固态驱动器 (SSD) 不会永远持续下去。事故也会发生。笔记本电脑可能会丢失、被盗或掉下楼梯。

过去常说,只有在丢失数据后,有效备份系统的价值才会显现。当发生故障或丢失时,您需要有一种快速简便的方法来取回您的文件和信息。如果一个组织丢失数据,其影响是严重的。它甚至可能危及业务连续性。即使在家庭环境中,数据丢失也是一种痛苦的经历。备份是唯一明智的保护措施。

最重要的是,根据某些数据保护法规,例如一般数据保护条例 (GDPR),意外或恶意丢失个人身份数据被视为违规行为。

选择备份软件时需要注意几个注意事项。您希望将备份保存在哪里?在可移动驱动器上、在局域网 (LAN) 中的另一台计算机上还是在云存储中?显然,您需要使用一个备份程序,它可以写入您希望使用的数据存储并从中恢复。

备份应该加密,尤其是当它们要存储在场外位置或云中时。如果它们被加密,未经授权的人将无法读取和恢复它们。

该程序应该很快。您不想整天等待备份或恢复完成。一些程序存储基本备份映像,然后为每个后续备份存储基本映像和源计算机之间的差异。这大大加快了备份过程。它还为您的备份使用更少的空间。

restic 完成所有这些。它是免费的、开源的,根据 2-Clause BSD 许可证获得许可,并且正在积极开发中。源代码在 GitHub 上。

备份到哪里

在本文中,我们将通过网络将备份存储在另一台计算机上。这很好,因为它提供了快速的文件传输,而且很容易备份和恢复。在真实场景中,您确实还需要备份到另一个场外位置。如果您的实时系统和备份位于同一位置,并且该位置发生灾难(火灾、盗窃或洪水),除非您有场外备份,否则您的鹅将被煮熟。

不出所料,restic 可以备份到可以带走的外部驱动器,而且——更好的是——它可以直接备份到云存储。

开箱即用,restic 可以备份到:

  • 本地目录或本地可移动驱动器。
  • 一台通过 SSH 文件传输协议 (SFTP) 联网的计算机。当然,这需要安全外壳 (SSH)。
  • HTTP REST 服务器。
  • AWS S3。
  • OpenStack Swift。
  • BackBlaze B2。
  • Microsoft Azure Blob 存储。
  • Google 云存储。

如果您需要备份到不在该列表中的数据目的地,您可以将 rclone 的强大功能与 restic 结合起来,并备份到 rclone 支持的大约 40 个目的地中的任何一个。

SFTP 网络备份需要在备份服务器上安装和配置 SSH。这是将存储备份的机器。如果您在备份服务器和要备份的机器上设置 SSH 密钥,则每次运行备份时都不会提示您输入 SSH 密码。

自动备份的一种方法是创建简短的脚本或 shell 函数,并使用 cron 在指定时间运行它们。使用 SSH 密钥可以避免为无人值守备份提供密码的问题。

安装 restic

restic 应用程序位于主要 Linux 发行版的存储库中,因此安装它是使用每个发行版的包管理器的简单单行。

要在 Ubuntu 上安装 restic,请键入:

sudo apt install restic

在 Fedora 上使用的命令是:

sudo dnf install restic

在 Manjaro 上我们使用 pacman:

sudo pacman -Sy restic

设置静态

确保在备份服务器机器上设置了 SSH,并且可以从要备份的机器远程连接到它。那是客户端机器。在我们的测试网络中,客户端名为“ubuntu-20-10”,服务器名为“backup-box”。

在 restic 的术语中,备份作为快照存储在存储库中。每个备份都会创建一个新快照。我们需要在服务器上为存储库创建一个位置。

我们需要在备份服务器上创建一个目录来保存存储库。从历史上看,服务器提供的服务位于“/srv”目录中。所以我们将把我们的存储库放在那里。

在备份服务器上,发出此命令。您可以随意命名存储库目录。为了简单起见,我们使用名称“restic”。

sudo mkdir /srv/restic

我们需要确保处理备份的人员可以访问此目录。如果是多人,创建一个用户组并授予该组访问目录的权限是有意义的。

sudo chown dave:dave /srv/restic

让我们检查目录上的设置:

ls -hl /srv

现在我们可以转移到客户端机器并从那里在服务器上创建存储库。替换您的用户名、备份服务器的名称和存储库目录的名称以匹配您的选择。如果您愿意,可以使用备份服务器的 IP 地址。

我们使用 -r(存储库)选项来指定我们要创建的存储库的路径。 restic init 命令初始化存储库。

restic -r sftp:dave@backup-box.local:/srv/restic init

系统将要求您提供备份服务器上用户帐户的密码。如果您已在服务器和客户端之间设置 SSH 密钥,则无需执行此步骤。

您还将被要求提供存储库密码,然后您将被要求确认。将来必须使用此密码与存储库进行交互。别弄丢了!如果丢失密码,您将无法备份或恢复数据。

创建和初始化存储库只需要一点时间。

创建备份

创建备份非常简单。我们在 restic 中使用 backup 命令,告诉它我们要备份什么,以及要将备份发送到哪个存储库。

restic backup Documents/kernel/ -r sftp:dave@backup-box.local:/srv/restic

您需要提供用户密码和存储库密码。备份运行时,将显示正在复制的文件的名称,以及告诉您将要复制的文件总数、到目前为止已复制的文件数以及备份完成的百分比的统计信息。快照使用高级加密标准 AES-256 进行加密。

因为这是此存储库的第一次备份,所以备份的所有文件都是新的。我们确实说过 restic 很快——在 23 秒内备份了超过 70,000 个文件。这就是 Linux 内核的所有源代码。

在另一台测试机上,我在一个半小时内备份了超过 350,000 个文件,总计超过 170 GiB。

我在源目录中的客户端上创建了一个新文件并运行了另一个备份。命令与之前相同。

restic backup Documents/kernel/ -r sftp:dave@backup-box.local:/srv/restic

扫描源目录树以查找更改,检测到新文件,并对其进行备份。第二个小备份用了三秒钟完成,包括扫描其他文件的变化。

让我们看一下存储库中的两个快照。此 restic 命令是 snapshots。

restic -r sftp:dave@backup-box.local:/srv/restic snapshots

每个快照都被赋予一个十六进制标识符作为唯一 ID。显示创建每个快照的日期和时间。还显示了进行备份的计算机的名称以及备份数据的路径。

然后我创建了第二个新文件并创建了另一个备份。同样,命令行与以前相同。

就像我们之前的充值备份一样,这个微小的更新需要三秒钟才能完成。

到目前为止,您可能已经厌倦了输入存储库密码。我们可以在使用 snapshots 命令查看我们的三个快照集合之前解决这个问题。打开一个编辑器并在其中输入存储库密码,然后按“Enter”开始新的一行。在您的主目录中将文件另存为“.rest_pass”。

为确保其他人无法看到密码,请使用 chmod 更改文件的访问模式位:

chmod 600 .rest_pass

这意味着除了您之外没有人可以访问该文件。

现在我们可以使用 -p(密码文件)选项将它传递给 rest 命令行。如果您还在客户端和服务器之间设置了 SSH 密钥,则您也不必输入用户帐户密码。一旦从流程中删除了人工交互,您就可以使用 cron 轻松地自动执行备份。

restic snapshots -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass

我们不再需要存储库密码,这很棒。我们不需要记住它,也不会打错它。

使用快照

restic diff 命令可让您查看任意两个快照之间的差异。使用要比较的两个快照的唯一 ID。使用 restic snapshot 命令时,您可以看到快照 ID。

restic diff -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass 8f98cd29 8700e4bf

快照之间的差异显示为统计列。

restic check 命令对存储库中的所有快照执行验证测试。

restic check -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass

要删除快照,您必须告诉 restic 忘记它并修剪它。您必须使用快照的唯一 ID 来标识要删除的快照。

restic forget --prune -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass e506e089

恢复数据

当需要从备份中恢复数据时,就像创建备份一样简单。您需要指定要还原的快照。您可以使用快照的唯一 ID,也可以使用 latest 标签来使用存储库中的最新快照。

您还需要使用 target 选项为要复制到的还原数据提供一个目录。

restic restore latest --target ~/restored-data -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass

恢复与备份一样快。查看目标目录,我们可以看到目录树和文件已经帮我们恢复了。

ls

做好备份,轻松入眠

数据丢失是一个严重的问题。强大的备份解决方案意味着您可以少担心一件事。使用 restic,您可以自动备份到本地和云存储库,然后高枕无忧。

©2015-2025 艾丽卡 support@alaica.com