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

所以我有这个工作stream程,但是很笨拙“

RSYNC到ultrapress.co

rsync -azP --delete /Users/rocketadmin/Sites/vagrant-local/www/wordpress-default/wp-content/themes root@107.170.237.162:/var/www/ultrapress.co/htdocs/wp-content/

rsync -azP --delete /Users/rocketadmin/Sites/vagrant-local/www/wordpress-default/wp-content/plugins root@107.170.237.162:/var/www/ultrapress.co/htdocs/wp-content/

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

然后修复所有权

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

我想知道在rsync中使用什么参数,所以我没有chown我的www文件夹每次我同步先谢谢您的指导…

你有3种方法来做到这一点:

  • 使用www-data用户给SSH访问www-data和rsync。 这是非常不推荐的,但是,如果你非常小心(阻止所有的SSH访问,除了你自己的IP,使用一个SSH密钥,并删除www数据用户的密码),它可能工作。
  • 在本地PC上创build一个与服务器上的用户名和数字用户ID相同的用户和组,并确保所有文件在rsyncing之前都拥有这些用户名(-a标志,您已经在使用这个标志)。
  • 在rsync完成之后,在服务器上为rsync创build一个包装脚本,然后使用–rsync-path参数作为客户端。

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

为此,在服务器上设置这些权限:

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

现在,每当有用户在这个目录下创build一个新的目录或文件,它就会有www-data的用户和组。

您也可以在所有现有的子目录上设置粘性位:

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

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

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

如果您有权访问rsync v.3.1.0或更高版本,那么–chown选项应该是您要查找的内容:

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

注意: -o-g选项是必需的,当然,它已经通过你设置的-a选项包含了。

更多信息可以通过在这里类似的问题的答案find: Rsync命令问题,所有者和组权限不会改变

做这种事时我常用的做法是做

 rsync <options> www-data@remote-host 

然后,我使用远程服务器上的www-data的 SSH密钥身份validation。

我个人也运行本地脚本作为万维网数据 ,因为我发现更合乎逻辑。