将Linux服务器备份到Windows服务器或DPM服务器/所有者和权利在NTFS?

我们正在为我们的Lonux服务器使用基于rsync的备份,这太棒了。 我们将我们的所有Linux服务器rsync同步到我们的大型Linux基础samba文件服务器上。 不幸的是,服务器完全过时并迁移到Active Directory。

现在我遇到了问题,从Linux服务器进行增量备份。 我特别喜欢rsync可以拷贝修改或删除的文件。

现在我想在Windows服务器上进行Linux备份。

我看了一下备份解决scheme,但几乎都是基于rsync的。 我寻找Windows的rsync(Cygwin或Microsofts SFU(服务于Unix))。 但似乎它不会做的伎俩。

为了正确地rsync所有者和权限,真正需要文件系统中的两个整数和一些标志。 虽然NTFS理论上规定,SFU和Cygwin确实试图将其映射到existng用户。

SFU的rsync似乎也是不可靠的

在我们当前的服务器上,我们不关心任何映射:如你所知,Linux服务器只是在文件系统中存储两个整数(在简单的情况下),没有像Windows这样的机器特定的长SID。 他们的意思是由/ etc / passwd定义的。 如果缺less,那只是整数。 但是,如果它回到服务器上,它再次工作。

有没有人find一个很好的解决scheme?

我甚至看了UMSDOS,Linux曾经可以存储在FAT16上! 它使用具有长文件名映射和unix权限和属性的文本文件。 不幸的是,它已经从内核中删除。 否则,我可以使用CIFS挂载和层上的umsdos在新的Windows文件服务器上挂载一个共享。 不幸的是,这样的东西不存在。

为什么我不想使用焦油? 因为我真的很喜欢我们的DPM服务器如何备份我们的Windows文件服务器,我不想完全备份一个完整的tar文件!

所以这听起来像你真正的问题是你想保留所有者和组的设置,但有数据迁移到一个系统,想要映射到自己的设置。 你也想保持你使用rsync获得的最小数据传输设置,但是从“从这里”到“在那里”可能比你想投资的花费更多的时间和精力。Tar可以解决这个问题,每个文件的整个图像,而不是增量。

总结一下:你想要一些改变数据增量的东西,但是保留了像tar这样的属性,忽略了目标系统的用户映射(因为没有共享帐户)。

商业解决scheme

第一个(也可能不是可行的)选项是查看是否有在Windows中使用的系统的备份客户端。 例如, Retrospect包含OS X和Linux客户端,允许Windows机器备份带有属性的文件。 我的工作已经使用了这个安排几年了,除了一些I / O尖峰客户端,它已经像广告一样工作。 看看是否有一个客户端可以在Linux上安装,这样你就可以在两者之间“弥合差距”,你不必担心这个问题。 注意: 我注意到您没有发布您正在使用的备份解决scheme,这意味着如果您使用的是本地Windows备份(ick),那么您运气不好。

开源解决scheme

这是一个非常疯狂的事情:在Linux端启动一个Samba服务器,放出一个用于pipe理用途的共享(隐藏,只为pipe理员设置等),映射共享或在Windows备份服务器上使用UNCpath,然后执行从份额备份。 是的,你的SID不匹配等等(因为AD < – > passwd之间没有映射),但是这并不重要,因为在备份和恢复期间Samba都会为你做翻译 。 缺点是你要定期备份Samba .tdb文件,以确保不会丢失任何设置,以及/ etc / passwd中的用户映射等。您还需要设置此分享得非常仔细 ,因为错误的设置会导致文件重新映射到不同的值。 这里的概念是,我们正在把Samba变成粗略的“备份客户端”,可以以与Windows一致的方式进行访问。 它还假定您的备份软件将处理您想要的任何增量/压缩function…

与商业解决scheme不同的是,这个共享似乎只是另一个Windows服务器UNC,因此具有使用内置Windows备份的额外好处。

第二种解决scheme已经被@Brent提及,值得研究。 这将是我给出的方法的几个步骤。 而不是剽窃他的post,而是去读它 。

本土解决scheme

一种解决scheme是将元数据(所有权属性)从数据中分离出来并传输到服务器。 为此,将设置存储在单独的点文件中,然后将点文件与内容一起传输。 这将允许您在保持设置的同时使用rsync(如果您愿意的话)。 作为额外的好处,rsync也会将相同的delta传输机制应用到dotfile中。 在还原过程中,您可以通过从点文件中提取设置并将其应用于目录内容来反转该过程。 这是非常耗时的,浪费了一些磁盘空间,但它很简单 (你可以看到正在发生的事情)和持久的 (它只是文本文件,所以它很容易修复),简单有时是最简单的方法,即使看起来“暴力强制”。 我会select这个作为你最后的select。 您不仅会遇到竞争条件(如果您在脚本运行时尝试启动备份,将在备份之前及时更新点文件),但是您还需要手工制作所有内容。

您只需要三个脚本 – 一个用于重新生成每个目录中的点文件以进行设置,一个用于恢复它们,一个用于在不需要的时候清理点文件。

在生成/创build:在dotfile所属的每个目录中存储一个dotfile文件。 dotfile本质上包含一个ls -la以便捕获属性。 将root文件的所有者设置为root,以保持最小的恶作剧。 处理完这个目录之后,让它返回并从dotfile中提取每个目录(一个简单的grep就足够了),然后通过让脚本自己调用,recursion地进入每个子目录。 完成后,您所在目录的整个分支将为每个目录提供所有的点文件。 在备份之前运行此脚本以“重新生成”和“刷新”您的设置,或者如果可能的话,按顺序与备份脚本本身一起运行,以确保在备份开始之前完成。

还原时:还原脚本将重置所有点文件,以纠正所有权(再次保持恶作剧),然后recursion处理每个目录中的点文件,恢复每个文件的设置。 每个dotfile将需要3个通行证,所有者组世界的通行证,命名所有者的通行证,以及命名组的通行证。 文件操作通常不会太糟,所以这应该是非常快的,用waaay-to-many文件禁止非常大的目录。

在清理:简单,recursion删除dotfile每个目录。

是的,这是一个丑陋的黑客。 如果我能尽快find更好的答案,我会重新编辑。 在此之前,它解决了这个问题。

不知道你是否真的想保持rsync,或只是保持增量备份的好处。

如果你只是想要的好处,一个多平台的备份系统(如bacula)可能是一个很好的解决scheme。 它只会进行增量备份 – 如果这是你想要的 – 但它会将所有内容存储在一个(或几个)大文件中(而不是原始镜像)。 再次,不知道如果这是你想要或不。