我已经阅读了大量有关rsync
及其-a
切换的文章。根据理论,我知道它保留了很多属性,如权限、时间、组、所有者等,但为什么当我尝试它时这不起作用?
有两个用户sam
和pam
。我正在尝试将文件从/home/sam
同步到/home/pam
,同时保留其所有者和组。
[sam@localhost sam]$ ll
-rwx---r-x 1 sam sam 0 Jul 18 18:39 abc
如果我尝试 rsync (以 user 身份登录后pam
),复制的文件没有sam
所有者或组。
[pam@localhost pam]$ rsync -a /home/sam/* /home/pam
[pam@localhost pam]$ ll
-rwx---r-x 1 pam pam 0 Jul 18 18:39 abc
为什么它不保留abc
as 的所有者和组sam
?
答案1
保留所有者(-o
,包含在-a
)是一项仅对超级用户 (root) 可用的功能。保留组(-g
,包含在 中-a
)仅限于运行 rsync(在目标站点上)的用户是该组成员的情况。 Rsync 之所以如此,是因为在大多数 Unix 变体上,都允许设置目标文件的所有者和组。
您可以使用 root 用户尝试该命令,或者添加选项--super
或--fake-super
。
--super
仍将尝试更改所有者和组,但前提是操作系统允许这样做。并非所有操作系统都允许这样做,最近的 Solaris 版本就是一个很好的例子。
--fake-super
将向目标文件添加扩展属性,以通过添加权限来模仿(假)文件的所有者和组。