场景:我的主目录位于 NFS 上,身份位于 LDAP 中,并且通过 Kerberos 进行授权。我的 NFS、LDAP 和 Kerberos 服务器都是虚拟机——我在家里部署了一些硬件。
生活是美好的......直到——总是有一个直到——我的虚拟机服务器停机进行维护(计划或更糟),这让我在维护/维修工作中失去了很多便利。
为了清楚起见,$HOME 和 $USER 是正常的、真实的,而 $CHOME 和 $CUSER 是本地克隆。
选项 1:rsync -av $HOME/ $CHOME/ 简单,但是虽然 sssd 会在离线期间缓存我的凭据,但 $USER 指向 $HOME(无法访问)而不是 $CHOME。
选项 2:类似,但使 $CHOME 归 $CUSER 所有。现在,$USER 被拒绝访问 $CHOME,或者 $CUSER 被拒绝访问 $HOME。我无法使用 root,因为 $HOME 是用 root_squash 导出的,我想保持这种状态。
选项 3:与选项 2 类似,但以某种方式使用 ACL。我是否应该能够在第一次 rsync 之前在 $CHOME 上设置默认 ACL 并让它们生存?我尝试过的所有操作都需要在每次 rsync 之后再次 setfacl -R $CHOME ,这似乎我只是做错了什么。
我确实只需要单向复制,但最好的解决方案是像 Unison 这样的解决方案,这样它就可以超越简单的恢复/维护辅助,还可以支持我们的笔记本电脑在家里在线时使用 NFS,但在离线时正常运行。
答案1
您的选项 2 的一些变化似乎是合理的。我将继续假设您通常使用$USER
on登录$HOME
,就像您的场景一样。您已经声明,由于权限问题(无法访问),您无法将文件从 复制$HOME
到,并且由于您的.$CHOME
$USER
$CUSER
root_squash
2a.调整$USER
和的权限$CUSER
,使它们属于一个公共主要组。为两者设置umask 002
,以便它们创建具有与用户相同的组权限的文件。更新 中的所有文件$HOME
,$CHOME
以便组所有权是这个新组。用于rsync -avH --no-owner [--delete] $HOME/ $CHOME/
复制更改的文件。运行几个cron
作业(一个用于$USER
,一个用于$CUSER
)来修复所有文件的错误权限和组成员身份。
2b.将所有内容保留为“原样”,并使用rsync
从客户端到自身的方式将文件从一个帐户复制到另一个帐户,从而通过连接更改身份:rsync -avH [--delete] $HOME/ ${CUSER}@localhost: