从本地笔记本电脑 Rsync 到具有正确所有权的 VPS

从本地笔记本电脑 Rsync 到具有正确所有权的 VPS

所以我有这个可行但笨拙的工作流程”

RSYNC 到 ultrapress.co

rsync -azP --delete /Users/rocketadmin/Sites/vagrant-local/www/wordpress-default/wp-content/themes [email protected]:/var/www/ultrapress.co/htdocs/wp-content/

rsync -azP --delete /Users/rocketadmin/Sites/vagrant-local/www/wordpress-default/wp-content/plugins [email protected]:/var/www/ultrapress.co/htdocs/wp-content/

=============================================================

然后修复所有权

sudo chown -R www-data:www-data /var/www

我想知道在 rsync 中使用什么参数,这样我就不必每次同步时都 chown 我的 www 文件夹,提前感谢您的指导...

答案1

有 3 种方法可以实现此目的:

  • 授予 www-data 和 rsync 的 SSH 访问权限,使用 www-data 用户。强烈不建议这样做,但如果您非常小心地执行此操作(阻止除您自己的 IP 之外的所有 SSH 访问,使用 SSH 密钥并删除 www-data 用户的密码),它也可能有效。
  • 在您的本地 PC 上创建一个用户和组,其名称和数字用户 ID 与服务器上的相同,并确保在 rsyncing 之前所有文件都将其作为所有者(您已经在使用的 -a 标志可以执行此操作)。
  • 在服务器上为 rsync 制作一个包装脚本,该脚本在 rsync 完成后立即执行 chown,然后为客户端使用 --rsync-path 参数。

答案2

您可以使用粘性位来确保 /var/www/ultrapress.co 下创建的所有内容都归 www-data 用户/组所有。

为此,请在服务器上设置以下权限:

chown ultrapress.co www-data:www-data
chmod u+s ultrapress.co
chmod g+s ultrapress.co

现在,无论何时任何用户在此目录中创建新目录或文件,它都会具有 www-data 的用户和组。

您还可以使用以下命令在所有现有子目录上设置粘滞位:

find ultrapress.co -type d -exec chmod u+s,g+s '{}' +

或者,将粘滞位设置为/var/www目录:

chmod u+s,g+s /var/www

答案3

如果你有权访问rsync v.3.1.0或稍后,--chown选项应该是您正在寻找的:

rsync -azP --chown=www-data:www-data [src] [dst]

注意:-o-G要使它工作,需要一些选项,但当然,已经通过-A您设置的选项。

可以通过以下类似问题的答案找到更多信息:Rsync 命令问题,所有者和组权限没有改变

答案4

我做这种事的通常做法是

rsync <options> www-data@remote-host

然后我使用 SSH 密钥身份验证www-数据在远程服务器上。

我个人运行本地脚本如下www-数据因为我觉得这更合乎逻辑。

相关内容