将unix文件备份到不允许chgrp / chown等文件系统

我不得不将一些文件从服务器上的ext3分区备份到一个文件系统,这个文件系统不允许我设置和编辑正常的文件属性(NFS,all_squash设置为chgrp / chown等,即使root被禁止)。 我正在计划使用rsnapshot进行实际的备份,因为我已经熟悉了这一点,并且在其他情况下运行良好。

显然,我希望在这些备份中保留权限,所有权和其他属性,即使它不是直接与文件本身。 正如我所看到的那样,有三个select:

  1. 在远程NFS空间创build一个环回文件系统。
  2. 分别转储其他属性。
  3. 通过写入/backup/.permissions/或一些其他额外的文件,使用FUSE文件系统作为掩盖这个的覆盖。

这些都不是理想的:

  1. 我想使用外部文件存储使用automount,但automount不允许像这样的recursion挂载(据我所知)。
  2. 使用shell脚本似乎并不容易。 使用find + stat会有些浪费,但更重要的是从这些信息中恢复将是非常烦琐的。 我可以写一个小的工具(用C语言)来调用stat ,将结构体转储到一个文件中并从该结构体中恢复相应的信息,但是这对于某些应该是微不足道的工作来说似乎是很多工作。
  3. 我很惊讶什么都不存在已经这样做,但我似乎无法看到任何适当的FUSE文件系统 ,我认为是相当权威的名单 。

build议? 我倾向于解决scheme#3,除非它已经存在或#2是更微不足道,我认为。 我想要一些简单又健壮的东西,不需要重新devise任何车轮,但是如果真的很有用,我愿意写出新的车轮。

您可以使用getfacl -R * >perms.bak转储文件的属性,并使用setfacl --restore=perms.bak

我的第一个build议是build立一个更传统的备份系统 – Bacula , tar ,甚至枯燥的旧的dump (8)和restore (8),并将这些备份存储到被压扁的NFS商店。 您仍然可以在本地使用rsnapshot作为“快速恢复”类工具。
这里最大的好处就是一个众所周知的,支持良好的备份方法,它更容易排除故障,并不关心底层存储是什么(因为就我提到的工具而言,他们只是使用NFS可用文件作为容器)。

除此之外,我认为你的下一个最好的select是设置回送文件系统 – 这回到上面的容器隐喻 – 但是这是远远不够理想的,因为你已经注意到了。 你可能会用shell脚本攻击一些可以接受的东西来处理环回FS文件设备的安装/卸载(Automount 可能在这里工作,但是我不认为它会正确地“链接”似乎需要 – 即意识到你需要/nfs/file/nfs是需要首先安装的自动挂载挂载点)

为什么不把这些文件粘贴到一些档案中呢? 你可以把它们放在NFS上。 我使用baculaencryption,存档,并将我的文件传输到备份服务器。

看看backuppc。 它将所有属性存储在一个单独的文件中。 在备份中有多个版本的同一文件时,它会进行重复数据删除。 如果您使用rsync作为协议,则进一步的备份将以增量速度完成。 处理笔记本电脑之类的。

一旦我第一次备份运行添加额外的系统是一件轻而易举的事情。

Bacula将是一个很好的select备份您的backuppc存储库到磁带异地存储。

编辑:重新读取您的文章,所以很可能你会阅读使用rsync。 我相信backuppc可能比rsnapshot更适合您的要求,并且应该具有类似的function。

虽然今天通过rsync手册页search一个完全不相关的原因,我偶然发现了--fake-super选项 :

从手册:

启用此选项时,rsync通过附加到每个文件的特殊扩展属性(根据需要)保存/恢复特权属性来模拟超级用户活动。 这包括文件的所有者和组…

当我最初提出这个问题的时候,我正在寻找的就是这个问题,尽pipe在发布之前我不知道我在search什么。 这整齐地解决了这个问题,没有任何回送文件系统的技巧,或外部属性转储或保险丝黑客入侵。