![即使使用 -a 和 --numeric-ids,Rsync 也不保留 UID/GID](https://linux22.com/image/115583/%E5%8D%B3%E4%BD%BF%E4%BD%BF%E7%94%A8%20-a%20%E5%92%8C%20--numeric-ids%EF%BC%8CRsync%20%E4%B9%9F%E4%B8%8D%E4%BF%9D%E7%95%99%20UID%2FGID.png)
我正在尝试使用rsync
它来备份远程文件,但远程系统上的 UID/GID 与我本地的不同。无论我尝试什么,我的所有本地文件都是“opux/opux”,它们的 *ID 都是 1000。这是我的 rsync:
sync -e "ssh" --rsync-path="sudo rsync" -AXSHavz --progress --numeric-ids pi@rpinfs:/mnt/mainhdd/dospace/ --exclude 'videos' ~/backups/dospace/
我已经尝试过--super
,--fake-super
但第一个只是给我“不允许操作”,而第二个似乎没有做任何事情。我该怎么办?
我知道在保留所有元数据的同时进行备份的一种方法是使用 tar,但据我了解,它不能很好地进行远程备份。我想要一些可以简单运行的东西,理想情况下,不需要在我的本地系统上以 root 身份运行。
远程系统是运行 Raspbian 的 Raspberry Pi,因此唯一的登录用户是 root。我的本地系统是Ubuntu 16.04 AMD64。
答案1
如果您要从远程传输数据,则无需root
远程(除非您的 SSH 用户没有所有受影响文件的读取(对于目录:执行)权限。
但是,如果您希望 rsync 在本地更改文件的所有者(和组),那么它必须像平常一样运行root
。例外情况:如果所有文件和目录都属于同一用户(这不是您通常在本地运行 rsync 的用户),那么您可以以该用户身份运行 rsync。
rsync
另一种解决方案是根本不关心文件元数据并单独处理它:
getfacl --recursive /mnt/mainhdd/dospace
但有些东西必须在root
本地运行。跑步是否setfacl
比root
跑步更好rsync
是root
一个有趣的问题......