这可能看起来像一个应该已经被覆盖了数百万次的问题,但我遇到的问题是,在networking冲刷的几天之后,我仍然可以修复。
我有一个我想完整备份的远程服务器。 我从本地机器上运行rsync,用户seb可以通过ssh使用公共rsa密钥访问服务器。 遥控器有两个用户, seb和git都有自己的文件夹。 用户seb是远程的sudoer。
我从本地运行的命令
sudo rsync -av --rsync-path="sudo /usr/bin/rsync" seb@remote:/ /path/to/backup/
这在身份validation和权限方面运行良好。 我必须以root身份远程运行sudo,因为否则,我会得到root和git拥有的权限被拒绝的权限。
我使用sudo在本地以root身份运行,因为rsync手册指出,为了保持组和所有者设置与-a标志一样,接收用户应该是root用户 。
但是,在rsync完成后, git拥有文件的组和所有者将分别更改为rtkit和bluetooth 。 现在我认为它只对git用户而言是失败的,而对于root和seb则不然,因为后两个用户都存在于两台机器上。
有没有办法保持组和所有者设置,而不在本地机器上创build用户git ?
PS的全面披露,因为我不知道这是否会有所影响,但我不这么认为,我运行rsync通过非标准的端口与-e "ssh -p PORT"
很有可能用户'git'和用户'rtkit'在两台机器上共享相同的UID(或GID)。 所以这些文件正在用正确的UID / GID保存,但映射到每台机器上的不同用户名。 检查2台机器上的/ etc / passwd和/ etc / group以查看UID /名称映射重叠的位置。
如果这仅仅是一个备份,那么对于UID / GID映射是什么都没有关系,当你必须将备份恢复到原始机器时,映射将回到你在机器1上使用的名字。
要解决这个问题,你必须在两台机器之间同步你的用户/组。 或者切换到使用LDAP或NIS或SMB的集中login。