当需要密码时在 cronjob 中使用 rsync

当需要密码时在 cronjob 中使用 rsync

基本上我有一个 bash 脚本,它从我的服务器获取数据来执行备份。

现在我必须手动启动该脚本,输入密码,然后等待它完成。

我想设置一个 cronjob 来处理备份。

但我真的不知道如何处理 cronjob 中的密码。

另外,我不能为此使用密钥,因为我的提供商不提供我配置它们所需的机制。

我可以通过 SSH 访问我的主文件夹,但在我的主文件夹中,除了目录之外我没有写访问权限http(s)docs。所以我无法创建~/.ssh/通过密钥登录所需的目录及其内容。

答案1

这是我用来备份到另一台机器的命令:

rsync -av -e "ssh -i /root/ssh-rsync-valhalla-key" \
  --exclude lost+found \
  --delete-before \
  /mnt/backup/ \
  [email protected]:/cygdrive/r/\!Backups/Niflheim &

所以你可以使用-i将密钥文件传递给 ssh。当然,在您的示例中,这意味着如果有人找出文件名,密钥文件本身将可以通过 HTTP 共享。

答案2

您能够启动守护进程并保持其运行吗?rsync如果是这样,您可以在守护程序模式下运行。

然后在客户端上您将使用一个rsync://网址进行连接。对于授权,您可以将其限制为仅您的 IP,我认为没有相当于 SSH 密钥的东西。

您需要一个 rsyncd.conf,它可以位于任何位置,其中包含以下内容:

[backup]
    path = /path/you/want/to/sync
    read only = true
    hosts allow = 1.2.3.4

然后启动守护进程..

rsync --daemon --config=rsyncd.conf

然后你可以尝试从中同步:

rsync -av rsync://server.ip/backup /local/backup/dir

相关内容