基本上我有一个 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