我想通过ssh使用rsync将文件从 source-machine 复制到 dest-machine (两个Linux盒子)。由于我无法控制的安全策略, dest-machine 上的文件必须归 user1 所有,但 user1 不允许记录in。我是 user2 并且可以通过ssh登录到两台机器, user2 与 user1 在同一组中,并且两个用户都在两台机器。登录到任一计算机 user1 后,首先执行 sudo -s (无密码提示),然后 su user1 EM>
这些文件通常具有以下权限:
source-machine:
-rw-rw-r-- user2 group1 file.txt
dest-machine:
-rw-rw-r-- user1 group1 file.txt
Rsync始终将 dest-machine 的所有权更改为user2,因为我正在使用
/usr/bin/rsync -rlvx --delete --exclude-from ignore-file.txt --rysnc-path="/usr/bin/rsync" /path/to/files/ -e ssh user2@dest-machine.example.com:/path/to/files/
作为rsync命令的一部分。目前,我必须确定哪些文件已被复制并将所有权更改回 user1 。
我在this discussion中看到可以使用
--rsync-path='sudo -u user2 rsync'
但我需要 sudo -s 的中间步骤。
有没有办法让rsync将文件保留在 user1 所拥有的 dest-machine 上?
更新:感谢mnagel的评论,我尝试了这种排列,当它不起作用时,我正在探索原因并添加了两个排列:(1)我在 source-machine 作为根和(2)我不知何故不包括-go作为选项。 (我没有使用-a,因为安全策略不允许保留时间)。当完全放入时,它的工作原理。