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