Windows 有一个 WinSXS 目录,它存储一些系统文件的旧版本,以防您想要回滚服务包或类似文件。(这些存储为硬链接,因此许多文件指向与当前系统文件相同的磁盘区域)。
它还有一个卷快照服务,可以保存整个 NTFS 卷的旧版本的快照。我的理解是,它被诸如备份工具之类的东西使用,它们希望查看整个卷内容的瞬时快照。
我可以看到它们是完全不同的东西,并且出于不同的目的,但它似乎仍然是重复的。谁能解释为什么这些功能中的一个或其他不能满足所有需求?
WinSxS 不是旧系统文件的备份。它是Dll Hell问题的解决方案。它允许 MS 和第三方开发人员安装同一个 dll 的多个版本而不会与已安装的软件发生冲突,甚至可以同时将不同版本的 dll 加载到同一个二进制文件中,由激活上下文机制控制。在基本级别上,您可以将其视为对 PATH 变量的细粒度控制。已安装的程序集不是备份,它们可以同时使用,或者如果您愿意,可以并排使用。
在 linux 上,如果您要以二进制形式发布存储库外的应用程序,您将使用 rpath 来获得类似的效果。尽管这不是那么灵活(因此不那么复杂)。
在引入 WinSxS 之前,唯一的其他方法是在每个可执行文件的基础上使用注册表中的App Paths设置。这些在实用性方面受到限制,并且受到 MAX_PATH 问题的困扰(就像 Win32 上的许多事情一样)。
卷快照是一种备份,它允许您在出现问题时将系统恢复到以前的状态。快照并不意味着在正常操作期间可以访问。并且删除所有快照以释放空间不应该使您的系统变砖。:)