这似乎是一个应该被覆盖数百万次的问题,但我遇到的问题经过几天的网络搜索后仍然可以解决。
我有一台远程服务器,我想将其全部备份。我正在本地计算机上运行 rsync,用户为塞布可以使用公共 rsa 密钥通过 ssh 访问服务器。远程有两个用户,塞布和git每个都有自己的文件夹。用户塞布远程计算机上是否有 sudoer。
我从本地主机运行的命令
sudo rsync -av --rsync-path="sudo /usr/bin/rsync" seb@remote:/ /path/to/backup/
就身份验证和权限而言,运行良好。我必须使用 sudo 以 root 身份远程运行,否则我会被拒绝访问根和git。
我在本地运行根使用 sudo,因为rsync
手册指出,为了像使用标志一样保留组和所有者设置-a
,接收用户应该根。
然而rsync
完成后组和所有者git拥有的文件分别更改为rtkit
和bluetooth
。现在我假设它只会失败git用户,而不是根和塞布因为后两个用户在两台机器上都存在。
有没有办法在不创建用户的情况下保留组和所有者设置git在本地机器上?
为了全面披露,因为我不确定这是否重要,但我不认为如此,我正在rsync
使用非标准端口运行-e "ssh -p PORT"
答案1
最有可能的是,用户“git”和用户“rtkit”在两台机器上共享相同的 UID(或 GID)。因此,文件使用正确的 UID/GID 保存,但在每台机器上映射到不同的用户名。检查两台机器上的 /etc/passwd 和 /etc/group,查看 UID/名称映射重叠的位置。
如果这只是一个备份,那么 UID / GID 映射是什么并不重要,当您必须将备份恢复到原始机器时,映射将恢复为您在机器 1 上使用的名称。
要修复此问题,您必须在两台机器之间同步您的用户/组。或者切换到使用 LDAP 或 NIS 或 SMB 的集中登录。