Filesystems 为什么版本控制文件系统如此之少?

Filesystems 为什么版本控制文件系统如此之少?,filesystems,versioning,Filesystems,Versioning,我做了一些关于文件系统版本控制的文献研究。版本控制在非常早期的操作系统中已经很常见,例如有影响力但几乎被遗忘的不兼容分时系统(ITS)和TENEX。TENEX的继承者OpenVMS似乎仍在特殊应用程序中使用,并且它仍然支持版本控制。我发现了许多具有版本控制的实验性和历史性文件系统(请参阅)。但是没有一个主要的操作系统(Linux、Windows、Mac OS)默认支持版本控制 为什么现代操作系统和文件系统不支持40年前提供的功能?当然,您可以通过某种方式对系统进行版本控制,但这应该得到最基本的支

我做了一些关于文件系统版本控制的文献研究。版本控制在非常早期的操作系统中已经很常见,例如有影响力但几乎被遗忘的不兼容分时系统(ITS)和TENEX。TENEX的继承者OpenVMS似乎仍在特殊应用程序中使用,并且它仍然支持版本控制。我发现了许多具有版本控制的实验性和历史性文件系统(请参阅)。但是没有一个主要的操作系统(Linux、Windows、Mac OS)默认支持版本控制

为什么现代操作系统和文件系统不支持40年前提供的功能?当然,您可以通过某种方式对系统进行版本控制,但这应该得到最基本的支持,对应用程序是透明的。只是想澄清一下:日志记录和快照功能(比如苹果的计时器)是不一样的。文件系统级别的版本控制意味着:修改文件的每个进程都会自动触发新版本的创建,您可以直接访问afterwords(例如撤消该进程)。您可以通过写时拷贝来实现这一点,成本很低


我发现的唯一一个版本控制文件系统的现代应用程序是他们几个月前引入的。为什么文件系统的版本控制如此之少?计算机系统的进展如何?版本控制是个坏主意吗?

如果我有需要版本控制的东西,有很多方法可以做到(本地git存储库、网络版本控制系统等)。我想问题在于,如果每次更改文件时都创建一个新版本,那么磁盘中迟早会充满您可能需要或不需要的差异(临时/交换文件等)。像时间机器这样的快照有点中庸之道——他们让你回去,但不要花太多空间备份(可以说)不必要的“搅动”。

不能给你最终答案,但请考虑这2点:

  • 该功能对主流用户(98%的用户?)用处不大,所以如果没有人使用它,为什么要实现它呢
  • 存储空间在过去是很昂贵的,那么为什么要把它浪费在一个几乎没有人会使用的功能上呢

  • 在涉及磁盘写入的大多数情况下,版本控制往往没有用处。很多变化都是单向的,没有人关心以前的版本是什么

    另外,这很难。实现一个文件系统来处理版本控制本质上比创建一个没有版本控制的文件系统更困难。没有真正的动机来创建一个这样做的文件系统。新系统(zfs、ntfs、btrfs)可以做到这一点,因为存在基于功能的新的竞争状态,因此它们都在尝试将尽可能多的功能塞进FS设计中


    大多数人都乐于在他们真正关心的文件上使用VCS,而不是在FS版本控制上浪费空间。

    根据达尔文的说法,没有实际使用的进化特征往往会被取消选择。如果真的有这种广泛的需求,主要的操作系统会将其作为默认设置


    在PC出现之前的几年,我使用了虚拟机。不管喜欢与否,我做的每件事都有几十份副本。我不知道他们大多数是什么,也不在乎。它们很快变得杂乱无章。显然,文件系统版本控制是另一个“当时似乎是个好主意”的事情

    当今的大多数文件系统设计都是从Unix操作系统设计中获得的(就像Unix在VMS之前就有分层FS),随着Unix变得越来越流行,其FS成为主流。然后这些概念被带到其他操作系统。Unix没有文件的版本

    后来,采用了不同的方法来保存旧版本的快照。它们的优势在于它们是原子的,可以拍摄所有系统的整个快照。它还有一个显著的优点,即为部分更新的文件节省大量空间

    因此,今天,如果有人考虑支持版本,最好使用快照(因为许多文件系统都支持快照,当然还有所有现代存储系统)


    因此,这一有用的功能与OpenVMS这样的操作系统一起消失了(现在几乎消失了)

    Windows7中的NTFS支持版本控制,也许以前的版本也支持版本控制。界面上没有很好的宣传。如果我理解这个问题,我觉得ZFS()和Btrfs()是版本控制文件系统的好例子。这将是一个很好的社区Wikia为什么这个问题会被关闭?@dmckee这个与编程相关的问题的观点是非常有限和主观的。如果我问起如何做园艺,在哪里买一台新电脑,或者人们为什么向上帝祈祷,你是对的。Stackoverflow和其他社区一样,主要是一个社会系统。无论是在Usenet、Wikipedia还是Stackoverflow上,人们都是有着自己不同观点和信仰的人。我的意思不是侮辱或抱怨,结束这个问题是可以的,但这样的决定总是主观的。好的观点,但现在空间很便宜。您可以将版本控制限制为特定文件,并且只需要存储差异。我怀疑这个功能对主流用户没有多大用处。许多最终用户程序支持“撤消”功能,但如果保存文件并关闭程序,该功能将停止。通过文件系统级别的版本控制,您可以提供更好的。1-对于希望文档的旧版本,而不是在编写的所有内容中都使用git/svn的主流用户来说,它更有用。2-如果你能买得起32Mb的硬盘,为什么我们的1Tb硬盘大多是空的,我们就买不起呢?@Martin:1-同意。但是如果你不是一个“编码员”,你多久需要一次这个功能?2-也许当时的公司能负担得起,但80年代末90年代初的普通用户却负担不起。我记得我经常删除硬盘上不需要的内容,因为我的空间不够用。@MicSim-用户多久有一次