为什么即使使用 -o / -g 选项,rsync 也无法保留我的用户和组?

为什么即使使用 -o / -g 选项,rsync 也无法保留我的用户和组?

在客户端:

rsync -x -r -t -v -o "nobody" -g "nogroup" --progress --delete -u --partial -s -e ssh /home/john/Calibre\ Library [email protected]:/media/Book

在服务器端:

clementine:/c/media/Book# ls -la
total 20
drwxrwxrwt   3 nobody nogroup  4096 Jul  1 20:34 .
drwxrwxrwt  13 nobody nogroup  4096 Jul  1 19:24 ..
drwxr-xr-x 246 backup users   12288 Jun 30 17:37 Calibre Library

我不知道为什么它会更改用户和组,并且没有分配给正确的用户和组。这是为什么?

答案1

更新:

我开始认为你的问题可能与你的机器上的 UID/GID 不同有关

用户在这个网站上解释如下:

您在新服务器上的 /etc/passwd 中没有用户名,这就是为什么您复制的文件中看不到所有者/组名。

只需将 /etc/passwd、/etc/shadow 和 /etc/group 中的相应条目从旧服务器复制到新服务器就可以了。

这有道理吗?在评论中我提到在客户端和服务器上对某些文件/文件夹使用“stat”命令。stat 的部分输出将显示 UID 和 GID。这可能有助于确定客户端和服务器之间的差异。

原始答案:

我看到你有“[电子邮件保护]“,但请继续并确保在命令中添加“--super”选项。

rsync -x -r -t -v -o "nobody" -g "nogroup" --super --progress --delete -u --partial -s -e ssh /home/john/Calibre\ Library [email protected]:/media/Boo

Linux 手册页

-o, --owner
此选项使 rsync 将目标文件的所有者设置为与源文件相同,但前提是接收 rsync 以超级用户身份运行(另请参阅 --super 和 --fake-super 选项)。如果没有此选项,则新文件和/或传输文件的所有者将设置为接收端的调用用户。

相关内容