目标是通过ssh同步本地和远程文件夹。
我当前的用户是 user1 ,我通过ssh对服务器 server1 进行无密码访问设置。 我想通过 rsync 实用程序将本地文件夹与 server1 上的文件夹同步。 通常我会跑:
rsync -rtvz /path/to/local/folder server1:/path/to/remote/folder
ssh 访问按预期工作, rsync 能够通过 ssh 连接,但它返回“权限被拒绝”错误,因为在 server1 文件夹/path/to/remote/folder
归 user2 所有: user2 。该文件夹的文件权限不允许其他任何人更改。
user1 是 server1 上的sudoer,因此sudo su - user2
在 ssh 会话期间有效。
当用户 ssh 加入服务器时如何更改 rsync 来切换用户?
将 user1 添加到组 user2 不是一个选项,因为服务器上的所有用户/组管理都是自动完成的,并且每隔X分钟从中央仓库复制一次,我无法访问。
更改目标文件夹的权限/所有权相同:它会定期自动更新,并重置所有权限。
我想到的可能解决方案是一个脚本,它将本地文件夹与服务器上 user1 所拥有的临时中间远程文件夹同步,然后将两个远程文件夹同步为 user2 。
谷歌搜索更短,更漂亮的解决方案并没有取得任何成功。答案 0 :(得分:5)
我自己没试过,但是如何使用rsync的'--rsync-path'选项呢?
rsync -rtvz --rsync-path='sudo -u user2 rsync' /path/to/local/folder server1:/path/to/remote/folder
答案 1 :(得分:1)
要修复权限问题,您需要通过以user2远程登录的SSH会话运行rsync:
rsync avz -e 'ssh -i privatekeyfile' /path/to/local/folder/ user2@server1:/path/to/local/folder
以下答案说明了如何设置SSH密钥。
答案 2 :(得分:0)
为 user1 设置无密码访问权限以访问 user2 @ server1 ,然后执行以下操作:
rsync -rtvz /path/to/local/folder user2@server1:/path/to/remote/folder