8

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

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

rsync -rtvz /path/to/local/folder server1:/path/to/remote/folder

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

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

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

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

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

4

3 回答 3

6

我自己没有尝试过,但是使用 rsync 的 '--rsync-path' 选项怎么样?

rsync -rtvz --rsync-path='sudo -u user2 rsync' /path/to/local/folder server1:/path/to/remote/folder
于 2013-01-16T23:51:56.537 回答
1

要解决权限问题,您需要在以 user2 身份远程登录的 SSH 会话上运行 rsync:

rsync avz -e 'ssh -i privatekeyfile' /path/to/local/folder/ user2@server1:/path/to/local/folder

以下答案解释了如何设置 SSH 密钥。

于 2013-01-16T21:49:50.183 回答
0

为user1设置无密码访问权限以访问user2@server1,然后执行:

rsync -rtvz /path/to/local/folder user2@server1:/path/to/remote/folder
于 2013-01-16T04:20:08.403 回答