远程运行 borg 提取

远程运行 borg 提取

/mnt/backup考虑已对位于上的远程存储库进行了备份server

对于非 Borg 用户,存储库由多个存档组成。每次进行备份时都会创建一个存档。现在,假设我想提取一个特定的档案 - 为简单起见,提取最新的档案。

我目前执行此操作的方法是从远程存储库获取档案列表,然后将它们的名称存储在数组中mailarchives。看起来像:

mapfile -t mailarchives < <(borg list --short 'faheem@server:/mnt/backup')  

然后,我从(最新的存档)中提取所有文件mailarchive[-1],以验证该存档是否有效并且可以从中恢复。看起来像:

borg extract -n 'faheem@server:/mnt/backup'::"${mailarchives[-1]}"

然而,这使用大量数据在本地复制所有内容。所以,我的问题是是否可以远程完成所有这些工作,并且仅通过本地传输结果(无论成功还是失败)ssh。我认为这应该是可能的,但我不知道具体如何。

一个更简单的例子是

borg check faheem@server:/mnt/backup

由于某种原因,它也会消耗大量数据。

此外,尽管表面上看,这个问题并不是真正针对 Borgbackup 的。更一般地说,如果我想在远程计算机上运行检查,但通常需要在本地下载大量数据,如果我想在本地运行检查,我可以远程运行此检查吗?只是将成功或失败的结果传递给本地?

最后,来自 Borg 主要/首席开发人员的注释:

ThomasWaldmann> faheem: borg 在成功时返回 0,在警告时返回 1,在错误时返回 2。

答案1

实际的答案将取决于您将如何“检查”备份以及备份工具执行检查的能力。

我假设您正在使用borgborg check对您来说就足够了。如果您有不同的特定备份验证要求,请编辑您的问题。

远程运行borg

能够borg check远程执行需要 1) 您可以在远程服务器上运行命令,2)borg安装在远程服务器上。这可能是最常见的设置,但也可以使用替代方案(存储库可以位于本地安装的远程卷上,例如使用sshfs)。

如果您的存储库是未加密您可以使用以下命令检查它:

$ ssh user@host 'borg --show-rc check /path/to/repo'

borg将在远程服务器上运行 - 而不是在本地计算机上。该--show-rc选项将borg输出其退出代码;它将显示在您的本地控制台上(标准输出被重定向)。您可以添加--verbose--progress选项来获取更多信息。
您还可以添加--verify-data选项以从存储库中提取所有数据,解压缩并(远程)检查。

当您borg check user@server:/path/to/repo/在本地运行时,即使没有该--verify-data选项,存储库中的所有压缩数据也会从远程传输到本地。

borg文档默认在本地运行的原因borg可能是建议的配置包括加密,并且出于安全原因,加密/解密应仅在本地完成。

如果您的存储库是加密的:

  • 如果你选择密钥文件加密,您需要向远程进程提供密钥文件。这通常意味着将其复制~/.config/borg/keys/key_name到远程服务器上的同一路径(有关替代方案,请参阅官方文档)。
  • 如果你选择重新加密,远程进程将需要询问您的密码。

要让远程进程询问您的密码,您必须ssh使用-t选项调用,这将在远程服务器上分配一个伪终端:

$ ssh -t user@host 'borg --show-rc check /path/to/repo'

重要的安全考虑:

加密存储库可以使用部分受信任的服务器 - 您足够信任的服务器,可以确保您的数据不会被删除或丢失,但您不想实际看到您的数据。

如果您不完全信任远程服务器,您可能不想向其提供加密密钥和/或密码。这将阻止您远程检查档案和数据。
只能在不解密的情况下检查存储库:如果您调用borg check --repository-only;就会发生这种情况。不检查数据块 - 有关详细信息,请参阅在线文档。

答案2

如果borg check这是你想要的,你能不能直接运行它server以避免大量的数据传输?也许我对你想要实现的目标感到困惑。它看起来像这样:

ssh faheem@server
screen # so you can resume after disconnect (optional)
borg check /mnt/backup

另一方面,如果您想自己实际验证这些文件而不是相信 Borg 关于文件没问题的断言,您可以:

  • ssh 到服务器
  • 将存档解压到服务器上的临时目录(因此它将使用服务器存储但不上传/下载数据)
  • hashdeep使用诸如计算每个文件的哈希值之类的工具
  • 删除服务器上的临时目录
  • 下载哈希文件
  • 将哈希值与实际文件进行比较

如果我的建议相距甚远,也许你可以更好地向我澄清你想要做什么。

相关内容