我在使用一个 rsync 命令时遇到了三个问题,如下:
sudo rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress <user>@<ip.address>:~/public_html/ /var/www/html
1.) 如何更改此命令以便我无需密码即可使用它?我想使用 cronjob 自动从我的服务器定期上传/下载。现在,我需要输入本地用户密码,因为 html 文件夹位于文件系统内。其次,即使我已经与远程主机设置了 ssh 密钥,并且无需输入远程主机密码就可以建立连接,但此命令会提示我再次输入远程主机密码(无法识别保存的 ssh 密钥)
2.) 在使用上述 rsync 命令之前,我的 LAMP 开发环境运行良好。但是,通过上述命令从远程主机下载我的网站后,文件和目录的权限发生了变化。我相信 -a 属性维护了远程主机的用户名和权限。如何将我的 LAMP 权限恢复到原来的状态?
我已经跑了'sudo chown -R www-data:www-data /var/www/html
”,但是,我的 WordPress 站点现在全部重定向到实时生产站点,例如: https://localhost.sitename.org重定向到https://sitename.org/wp-signup.php?new=localhost
不,/etc/hosts 尚未编辑且设置完美。
3.) 我应该将哪些属性与上述 rsync 命令一起使用,以避免将来陷入当前的泥潭? SSH RSYNC 显然比任何 ftp 更快、更安全。只是需要帮助改进我对它的使用。谢谢。
答案1
- 把它放在你的 cron 中(每天3点12分进行)
12 3 * * * root rsync -Havz USEROFTHESOURCEHOST@SOURCEHOST:~/public_html/ /var/www/html/
sudo
不是必需的,因为我们已经使用它root
来提供正确的权限。
确保您有 ssh 密钥root
(不仅仅是您的普通用户)
另外,不要忘记/
最后的尾随
-a
确实保留了所有文件的大部分属性。但请记住,同一用户在不同的系统上可以有不同的 UID 和 GID。 “真正的”属性是 UID(和 GID)而不是用户名(或组名)我上面放置的命令实际上不是我在现实生活中会执行的命令,我会在源主机而不是目标主机上使用 cron,以便它变为:
12 3 * * * root rsync -Havz /home/USEROFTHESOURCEHOST/public_html/ USERATTHEDESTHOST@DESTINATIONHOST:/var/www/html/
(请确保您USERATTHEDESTHOST
是有权限写入 / 的用户var/www/html
)