我一直在尝试理解,在使用BackupRead和BackupWrite备份计算机上的数据时,正确的方法应该是什么,尤其是关于可靠地恢复数据。
现在我知道如何使用API了,并且已经成功了。然而,有一件事困扰着我。除了文件内容本身之外,您还可以备份任何备用数据流以及安全信息(ACL)。
现在,如果我要存储ACL数据以进行备份,然后在需要在另一台计算机或新设置的计算机上恢复数据时,我应该如何处理与ACL相关的SID?SID很可能对机器不再有效,应该如何选择正确的用户?现在我在更大的范围内考虑这一点,假设这是一台具有多个用户和数百或数千个具有不同设置的对象的计算机,如果要恢复应用于他们的安全设置的数据,这将是混乱的。
如果软件的用户希望备份安全设置,那么用户必须采取什么措施并相应地更新这些设置,或者是什么?
此外,BackupRead和BackupWrite将为我提供这些项的原始二进制数据,这并不是很难使用,但是很明显,这个API甚至不打算面对这个问题。
有谁知道备份应用程序应该如何处理这种情况?你的想法是什么,或者对这个特定主题的指导方针有什么建议?
非常感谢。
发布于 2011-02-18 07:10:58
我认为您正确地理解了数据备份和恢复的问题。我认为对问题的正确理解是问题解决的一半。我假设您和stackoverflow站点的大多数用户一样,主要是软件开发人员,而不是大型网络的管理员。因此,您可以从软件开发人员的另一面而不是管理员的角度来看待问题。管理员知道ACL的备份和恢复限制,并且已经在使用它。
一般来说,你应该明白备份的主要目的是保存数据,并在以后将数据恢复到同一台计算机上的或上。另一种标准情况是:更换硬件后,从一台服务器恢复到另一台服务器。在这种情况下,旧服务器将不复存在。主要是对服务器进行备份,并组织在客户机上工作,这样,没有的重要数据将保存在客户机上。
在大多数情况下,备份的数据在安全描述符中具有来自BUILTIN域的域组SID、域用户SID、well-known SIDs或SID别名。在这种情况下,根本不需要对SID进行更改。如果管理员要在ACL中进行一些更改,他可以使用不同的现有实用程序,如SubInACL.exe。
如果您编写要用于的备份/恢复软件,请使用可以在备份中包含的安全信息移动data,这些元信息是有关已保存的安全描述符中使用的帐户/组的本地SID的一些附加元信息。在还原软件中,您可以从保存的安全描述符中替换SID。许多年前,我为一个大客户写了一些实用程序,用于在域迁移后清除文件系统、注册表和服务中SD中的SID。这并不是那么复杂。因此,我建议您可以在备份/恢复软件中实现相同的功能。
发布于 2011-02-18 05:16:23
我确信Backup* API主要用于在同一台计算机上进行备份和恢复,这会使SID问题变得无关紧要。然而,假设您需要在新的安装上恢复备份,下面是我对解决方案的看法。
对于大家熟知的SID,如Everyone、Creator Owner等,实际上没有任何问题。
对于依赖域的SID,您可以按原样存储它们,并且在恢复时,如果需要,您可以修复域部分。您可能还应该存储此类SID的域名。
对于本地用户和组,您至少应该存储每个SID的用户名/组名。恢复时的修复可以根据这些名称部分自动执行,也可以手动执行(假设应用程序有一个用户界面),您可以询问用户是否希望将此用户映射到新的本地用户、将这些SID转换为众所周知的SID或保持原样。
与这类SID相关的大多数问题都可以(通常情况下也是如此)能够自动处理。我当然希望备份应用程序足够智能地执行我要求的恢复,并计算出旧机器上的"Erik“在新机器上也必须是"Erik”。
顺便说一句,如果你真的决定采用这样的解决方案,记住开始一夜之间的数据传输是多么令人恼火,只是为了在弹出窗口上完成5%的阻塞,它可以很容易地推迟:)
https://stackoverflow.com/questions/4293498
复制相似问题