为什么 duplicity 需要密钥?

为什么 duplicity 需要密钥?

我正在设置自动备份表里不一,但有些事情我不明白。我已经导入了自己的 GPG 公钥,但 duplicity 似乎也需要私钥。据我所知,公钥用于加密数据,私钥用于解密数据。因此,我看不出这里为什么需要私钥。

请赐教:)

答案1

我不知道什么是二重性,但可能需要签署备份。

答案2

除非您指定选项,否则 Duplicity 不会对档案进行签名--sign-key key-id。在非签名模式(仅执行加密)下,私钥仅在实际解密/恢复时才需要,例如存档读操作,这需要将档案与本地缓存重新同步(=解密档案)。

在过去的几年里,这个功能发生了很大变化。但我可以说,我们正在大量自动化,而不需要私钥。我们过去犯的最大错误是目录规范不一致,看:

  • 特定的缓存名称target_url,例如file:///usr/local/backup是该字符串的哈希值
  • 我们意外地生成了一个略有不同的 URL,但目标相同,例如file:///usr/local/backup/(带有尾部斜杠)或file:///usr/local/./backup用于读取操作(collection-status、list-current-files 等)
  • 当 URL 不同时,哈希值也会不同,并且此类缓存不存在(或处于不一致状态)
  • 此操作必须创建新的缓存,因此需要私钥才能解密档案

答案3

有可能。但是您可以创建一个额外的签名密钥,以确保加密备份的私钥非常安全。

问题描述如下:“duplicity incr-私钥丢失”

简而言之,如果备份机器上只有公钥,而没有私钥,则第二次增量备份将失败,并显示错误消息,如“缺少匹配的私钥”。这实际上是 Duplicity 中的一个错误,当系统未配置为使用英语时会发生这种情况 - 显然 Duplicity 会检查来自 GPG 的某些错误消息,但无法处理翻译的错误消息。

因此,还提到了一种可能的解决方法:将环境变量设置LANGen_US.UTF8。实际上,将其设置为空值也是可行的。因此,在 Ubuntu 16.04 下,像这样启动 duplicity 解决了我的问题:

env LANG= duplicity ...

相关内容