通过 SSH 从远程主机进行 RSYNC 会破坏 LAMP

通过 SSH 从远程主机进行 RSYNC 会破坏 LAMP

我在使用一个 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

  1. 把它放在你的 cron 中(每天3点12分进行)
12 3 * * * root rsync -Havz USEROFTHESOURCEHOST@SOURCEHOST:~/public_html/ /var/www/html/

sudo不是必需的,因为我们已经使用它root来提供正确的权限。
确保您有 ssh 密钥root (不仅仅是您的普通用户)
另外,不要忘记/最后的尾随

  1. -a确实保留了所有文件的大部分属性。但请记住,同一用户在不同的系统上可以有不同的 UID 和 GID。 “真正的”属性是 UID(和 GID)而不是用户名(或组名)

  2. 我上面放置的命令实际上不是我在现实生活中会执行的命令,我会在源主机而不是目标主机上使用 cron,以便它变为:

12 3 * * * root rsync -Havz /home/USEROFTHESOURCEHOST/public_html/ USERATTHEDESTHOST@DESTINATIONHOST:/var/www/html/

(请确保您USERATTHEDESTHOST是有权限写入 / 的用户var/www/html

相关内容