![Rsync:以 root 身份复制后,将所有者更改为 Web 用户](https://linux22.com/image/1353605/Rsync%EF%BC%9A%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E5%A4%8D%E5%88%B6%E5%90%8E%EF%BC%8C%E5%B0%86%E6%89%80%E6%9C%89%E8%80%85%E6%9B%B4%E6%94%B9%E4%B8%BA%20Web%20%E7%94%A8%E6%88%B7.png)
我似乎偶尔会遇到这个问题:
serverA 资产:
- 归用户所有:apache
- (没有“ftp”用户存在)
serverB 资产:
- 归用户所有:ftp
- (Apache 用户存在,但未使用)
我以 root 身份连接到服务器 A,然后以 root 身份通过 ssh rsync 到服务器 B。此后,服务器 B 上的所有资产均归 root 或 apache 所有,具体取决于我是否告诉 rsync 保留文件在服务器 A 上的所有权。
有没有人有技巧可以将 serverB 上 rsync 文件的所有权更改为其他用户,该用户不是 serverA 上的所有者,也不是发出 rsync 命令的用户?serverB 上生成的文件将归 'ftp' 用户所有。
过去,我总是只是在命令后面跟着一个递归 chown,但我想找到一种在 rsync 中执行此操作的方法,或者将其归结为单个命令。
答案1
尝试设置RSYNC_RSH
为"ssh -o 'User apache'"
和/或使用--rsync-path='su apache -c rsync'
或修补 rsync 源支持设置任意用户。
答案2
ftp
您可以通过在命令行中规定用户来最简单地完成此操作rsync
:
# rsync -av /serverA/source/path/ ftp@serverB:/serverB/destination/path/
系统将提示您ftp
输入账户密码serverB
。
/serverB/destination/path/
目标路径中的文件serverB
必须可由用户写入ftp
。