使用 rsync 保留所有权,无需 root

Vla*_*eev 6 backup rsync root owner

我想从一台机器执行增量备份(针对整个文件系统)。rsync这确实会,但是我还想保留文件所有权 - 意思是可以恢复它。

如果不rsync以 root 身份在目标机器上运行(存储备份),是否可以做到这一点?

一些想法...

  • 有没有办法以允许chown非root用户的方式挂载文件系统(FUSE?)?(我想可能需要noexec禁止提升。)
  • 在元数据文件而不是文件系统本身中存储和恢复所有权的某种方法?
  • tar可以存储文件所有权,尽管让它与 rsync 或增量备份一起使用会更复杂一些。能够像常规文件系统一样浏览备份也很好。
  • 也许某种假的根环境?虚拟机可以工作,但最好避免相关的维护和性能开销。

sho*_*hok 15

正如其他答案中所述,要直接保留所有权信息,您需要对目标机器进行 root 访问。

但是,您至少有两种解决方法可以在保留所有权的同时避免 root 访问:

  1. 使用--fake-superrsync 选项。从手册页:

启用此选项后,rsync 通过附加到每个文件的特殊扩展属性(根据需要)保存/恢复特权属性来模拟超级用户活动

这意味着所有权不是直接保留在经典 Unix 风格中,而是所有权信息存储在特殊的扩展属性中(即:一种附加到文件的“标签”)。还原时,rsync可以使用这个EA/tag来正确重建原始文件所有者。

  1. 不要让 rsync 保留所有权信息,而是使用该getfacl实用程序保留它们。例如,发出getfacl -R MNTPOINT > acls.txt您有效地将所有权(和 ACL)信息保存在文本文件中,以后可以使用该setfacl --restore命令恢复此类信息。