使用rsync + ssh +公钥作为不同于ssh密钥所有者的用户同步本地和远程目录

sch*_*ten 8 unix deployment permissions ssh rsync

目标是通过ssh同步本地和远程文件夹.

我当前的用户是user1,我通过ssh对服务器server1进行了无密码访问设置.我想通过rsync实用程序将本地文件夹与server1上的文件夹同步.通常我会跑:

rsync -rtvz /path/to/local/folder server1:/path/to/remote/folder
Run Code Online (Sandbox Code Playgroud)

ssh访问按预期工作,rsync能够通过ssh连接,但它返回"Permission denied"错误,因为在server1上该文件夹/path/to/remote/folderuser2所有:user2.该文件夹的文件权限不允许其他任何人更改. user1server1上的sudoer,因此在ssh会话期间工作.当ssh发送到服务器时,如何更改rsync来切换用户?sudo su - user2

user1添加到组user2不是一个选项,因为服务器上的所有用户/组管理都是自动完成的,并且每X分钟从中央仓库复制一次,我无法访问.

对于更改目标文件夹的权限/所有权也是如此:它会定期自动更新,并重置所有权限.

我想到的可能解决方案是一个脚本,它将本地文件夹与服务器上user1拥有的临时中间远程文件夹同步,然后将两个远程文件夹同步为user2.

谷歌搜索更短,更漂亮的解决方案并没有取得任何成功.

ymn*_*mnk 5

我自己没试过,但是如何使用rsync的'--rsync-path'选项呢?

rsync -rtvz --rsync-path='sudo -u user2 rsync' /path/to/local/folder server1:/path/to/remote/folder
Run Code Online (Sandbox Code Playgroud)