Rsync 作为另一个用户 (www-data)

Jes*_*ose 10 linux rsync

我通常使用图形 SSH 客户端来同步本地和远程目录。而且我必须将所有文件的所有权设置rootwww-data.

我可以对 Rsync 做同样的事情,只是我这样做www-data而不是root,这样我就不必在之后设置所有权?

Ant*_*des 9

不清楚你想做什么,所以让我假设你希望本地文件归用户 A 所有,远程文件归用户 B 所有。 如果你以用户 A 身份运行以下命令:

rsync [options] B@remote.system:/path/to/remote/dir /path/to/local/dir
Run Code Online (Sandbox Code Playgroud)

这将有你想要的效果。但这并不是一个真正的 rsync 问题(所以我没有详细说明上面的命令会做什么,我专注于你的问题);即使使用图形 SSH 客户端,如果您以用户 A 身份运行它并将其设置为以用户 B 身份登录到远程系统,您也应该能够做到这一点。


小智 5

如果您以 root 身份运行,请使用 rsync 中内置的 chown 选项:

sudo rsync --chown=www-data:group user@remoteIP:/var/www/html/ /var/www/html
Run Code Online (Sandbox Code Playgroud)

(将“group”替换为您想要的组,或者仅使用 --chown=www-data,同时替换 user、remoteIP 并根据您的喜好更改文件夹)

如果您不以 root 身份运行该命令,则文件所有权不会更改,因为您需要 sudo。因此,您确实必须以 www-data 的形式运行该命令,但这会导致其他复杂情况。

  • Ubuntu 15.04 上的 Mac OS X 10.11 rsync,rsync 版本 2.6.9。顺便说一下,我使用“--owner=www-data”和“--group=www-data”解决了这个问题。 (2认同)