Rsync部署和文件/目录权限

31

我正在尝试使用rsync部署我的网站,该网站位于共享Web主机上。

Phpsuexec正在运行,这导致我在通过rsync传输的文件和目录权限方面遇到问题。实际上,文件应设置为644,目录应设置为755,否则我会收到500错误。

经过多次尝试,我得出了以下rsync命令:

rsync -avz -e ssh --chmod=Du=rwx,go=rx,Fu=rw,og=r -p --exclude-from=/var/www/mylocalfolder/.rsyncignore /var/www/mylocalfolder/ user@mywebsite.net:~/

由于所有发送目录都已设置为744,所以不幸的是,此命令无法按预期工作。 另一方面,文件权限已被正确设置为644。

我无法理解问题出在哪里。

附言:我在本地机器上使用Linux操作系统。


你解决了这个问题吗?如果是的话,请分享一下,因为我遇到了完全相同的问题... - elundmark
很遗憾,我无法解决这个问题。 - Granze
请注意,您不需要使用“-p”选项:它已经被“-a”所隐含,而“-a”是“-rlptgoD”的别名(来源)。 - Boris Dalstein
1个回答

49

尝试像这样:

--chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r

这对我起作用了。


1
这对我有效。我想为目录设置770,为文件设置660,使用以下标志可以实现:--chmod=Du=rwx,Dg=rwx,Do=,Fu=rw,Fg=rw,Fo= - Bruce Kirkpatrick
1
谢谢,清晰明了且有帮助。 - shgnInc
5
如果您已经以数字形式拥有所需的权限,则可以使用较短的“--chmod=D0770,F0660”。这与使用完整权限符号(如rwx)相同,但更为简洁。 - geekQ
我认为您还需要检查是否传递了“--perms”参数,并且当前用户是否有更改该文件权限的权限。 - Flimm
要将文件或文件夹的权限设置为特定组的无权限,您可以在“=”符号后面简单地不分配任何内容。 例如,要将目录权限设置为750,文件权限设置为640,可以使用以下命令: rsync --chmod=Du=rwx,Dg=rx,D=,Fu=rw,Fg=r,Fo= --recursive ~/my/old/location ~/my/new/location 如果您没有明确设置权限,则它们将被设置为源权限。 - jeremysawesome

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接