我想从一台机器执行增量备份(对于整个文件系统). rsync确实会这样做,但是我想保留文件所有权 – 这意味着可以恢复它.
如果不在目标计算机上以root身份运行rsync(存储备份),是否可以这样做?
一些想法……
>有没有办法以允许非root用户chown的方式挂载文件系统(FUSE?)? (我想它可能需要noexec才能禁止提升.)
>某种方式来存储和恢复元数据文件中的所有权而不是文件系统本身?
> tar可以存储文件所有权,虽然让它与rsync或增量备份一起使用会涉及更多.能够像常规文件系统一样浏览备份也很好.
>也许某种假根环境?虚拟机可以工作,但是可以避免相关的维护和性能开销.
解决方法
如其他答案中所述,要直接保留所有权信息,您需要对目标计算机进行root访问.
但是,您至少有两种解决方法可以在保留所有权的同时避免root访问:
>使用–fake-super rsync选项.从手册页:
When this option is enabled,rsync simulates super-user activities by
saving/restoring the privileged attributes via special extended
attributes that are attached to each file (as needed)
这意味着所有权不是直接保留在经典的Unix风格中,而是所有权信息存储在一个特殊的扩展属性中(即:一种附加到文件的“标记”).还原时,rsync可以使用此EA /标记正确重建原始文件所有者.
>不要让rsync保留所有权信息,而是使用getfacl实用程序保留它们.例如,发出getfacl -R MNTPOINT> acls.txt可以有效地将所有权(和ACL)信息保存在文本文件中,以后可以使用setfacl –restore命令恢复此类信息.