我想将 rsync 任务自动化为 cron 作业。由于它需要密码,我无法执行 cronjob。我需要与 rsync 命令一起指定密码,否则我会将密码存储在一个文件中并从中读取。我的命令将如下所示:
rsync -aPe "ssh -i ' . $server->{'ssh_key'} . '" ' . $server_lock_dir;
那么我把密码放在哪里呢?
您不需要这样做 - 只需设置一对 ssh 密钥并将公钥放在远程系统的 .ssh 目录中。
然后你就这样做:
rsync -a -e ssh /local/path/ server:/remote/path/
(请注意,这-e ssh
已经是几年前的默认设置了,因此您可以忽略它,除非您使用的是非常旧的版本。)
此处有关于设置密钥的“操作方法”指南。
如果你想让它在 cron 中工作,你有几种可能性:
如果要远程复制文件:
笔记:
我的命令如下所示:
rsync -avz --progress -e "ssh -i /home/myaccount/.ssh/id_rsa" /home/myaccount/mysourcefolder remoteaccount@remoteserver:"/home/remoteaccount/mydestinationfolder/"