/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
实际的答案将取决于您将如何“检查”备份以及备份工具执行检查的能力。
我假设您正在使用borg
这borg 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
使用诸如计算每个文件的哈希值之类的工具- 删除服务器上的临时目录
- 下载哈希文件
- 将哈希值与实际文件进行比较
如果我的建议相距甚远,也许你可以更好地向我澄清你想要做什么。