我创建了一个运行的脚本表里不一备份我在 VPS 上的文件,并使用我作为用户生成的 GPG 密钥。
当我尝试以 SUDO 身份运行此脚本时,我得到:
GPGError: GPG Failed, see log below:
===== Begin GnuPG log =====
gpg: C7B2Y6DO: skipped: public key not found
gpg: [stdin]: encryption failed: public key not found ===== End GnuPG log =====
现在我明白了为什么会这样(因为它不是 SUDO 的密钥,而是用户密钥)但是在我去重新生成 SUDO 的密钥之前,是否可以让 sudo 使用用户密钥?
虽然不太重要,但该脚本是根据以下三个站点的组合建模的: http://www.cenolan.com/2008/12/how-to-incremental-daily-backups-amazon-s3-duplicity/
http://www.randys.org/2007/11/16/how-to-automated-backups-to-amazon-s-s3-with-duplicity/
答案1
解决方案:在 bash 脚本中添加以下内容:
HOME=/home/user/
鳍
答案2
您尝试过这个--homedir
选项吗?
答案3
我相信 sudo 的默认配置是保留 $HOME。因此,如果您以 user1 身份登录,并使用sudo scriptname
scriptname 执行的位置echo $HOME
,则应该会看到回显“/home/user1”,而不是“/root”。
我假设 BassKozz 没有改变这一点。也许他没有以他想要的用户 1 身份登录,而是以 sudo 身份运行脚本。也许他实际上只是以 root 身份运行脚本,例如通过 root 的 cronjob。在这种情况下,他的 $HOME 从一开始就不会是 /home/user1,所以即使 sudo 保留了 $HOME 的值也无济于事。在这种情况下,任何其他告诉您如何将 $HOME 设置为正确值或告知 gpg 您的主目录在哪里的答案都应该有效。
但是,如果他说他真的无法“以 sudo 身份”运行 duplicity 脚本(即以 user1 身份登录并输入 )sudo duplicity_script
,那么问题就不在于错误设置的 $HOME。正如我们所见,在这种情况下,$HOME 应该具有正确的值。所以问题出在其他方面。我听到的还不够多,对 duplicity+gpg 也不太了解,所以无法推测可能是什么问题。
答案4
您确定首先要使用用户 gpg 密钥加密您的备份吗?
除非您对 gpg 密钥进行了单独的备份(我希望您有),否则如果您丢失了主目录的内容,您将无法解密任何备份。