备份和版本控制之间是否存在根本区别?

时间:2009-02-14 19:15:54

标签: version-control backup

版本控制与普通备份有何不同?

让我们忘记功能装饰,专注于版本控制的灵魂。在将备份称为VCS之前,备份是否必须交叉?或者,对于不同的目标市场,它们在内心是一回事吗?

如果存在根本区别,那么达到版本控制状态的绝对最低要求是什么?

当你回答时,请不要只列出大多数版本控制系统已经或应该拥有的功能(例如增量压缩,分布式/中央存储库和并发访问解决方案),除非它们实际上是必需的。 VCS的定义。

17 个答案:

答案 0 :(得分:27)

版本控制的基本思想是管理同一信息单元的多个修订版。备份的想法是将最新版本的信息复制到安全的地方 - 旧版本可以被覆盖。

答案 1 :(得分:9)

执行分支和合并的功能将版本控制系统与普通备份分开。 “多个并发宇宙”。

另请参阅Eric Sink的优秀version/source control指南。

答案 2 :(得分:8)

我看到备份和版本控制之间存在几个根本区别:

  1. 备份仅存储最新版本,或者即使它们存储多个版本,它们也不会存储每个版本。 VCS 存储每个版本
  2. 备份版本经常过时,因为备份不会记录每次更改,而VCS会这样做,
  3. VCS允许同时追求同一变更的多个替代版本(即分支)。
  4. 但是,备份与VCS之间最重要的区别在于,在VCS中,更改具有含义。在备份中,会生成新版本,因为某个计算机某处决定自上次备份以来x小时;变更本身完全没有意义。在VCS中,会生成新版本,因为某些 human 决定此版本具有自己的含义,它自己的标识,与所有其他版本不同。因此,在备份中,所有版本都是相同的(更确切地说:它们同样毫无意义),而在VCS中,所有版本都是特殊的(它们具有自己独特的含义)。在VCS中,更改具有实际的历史记录,其中一个事件导致另一个事件,在备份中只有一串不相关的事件。

    与此密切相关的是更改元数据的概念。在VCS中,每个更改都有作者时间戳,最重要的是提交消息。此提交消息记录为什么进行了更改,换句话说,它记录了我在上一段中写过的“含义”。

    提交历史记录,尤其是提交消息是VCS存储库中最重要的数据,而不是实际的代码本身!备份中完全没有此元数据。

答案 3 :(得分:4)

版本控制代表整个变更历史;备份试图确保你不会失去它。

答案 4 :(得分:3)

这里有几个

  • 备份系统保留备份 给定时间范围。版 控制通常总是保持所有 有史以来的版本。
  • 版本控制 通常专注于版本控制 文本文件。
  • 在版本控制系统中,您通常可以立即访问任何文件的任何版本。备份系统可能需要一些时间才能访问您想要查找的内容。

答案 5 :(得分:3)

版本控制是协作的,备份只是一个快照。

示例:使用版本控制,两个人可以同时编辑同一个文件,系统足够聪明,可以将更改合并在一起。有了备份,哪个版本的文件会“赢?”备份永远不会将两个不同的备份“合并”为一个“真正的”备份。

答案 6 :(得分:2)

在我看来,这是VCS的一些最小功能,可能不在基本备份中:

  1. VCS应该存储多个版本(作为备份的地方可能只存储最新的最后一个版本)

  2. 由于1.,应以某种方式识别每个版本(日期,标签,版本ID)

  3. VCS通常可以支持多个并发用户

  4. 源代码的VCS通常支持分支,合并,添加注释和查看增量

答案 7 :(得分:2)

最突出的基本区别是版本控制允许多个用户轻松处理相同的代码。备份没有。

答案 8 :(得分:2)

它们之间肯定存在灰色区域,但我会定义如下:

版本控制由“写入”操作触发,其中备份通常由时间间隔触发。

备份软件可以配置为每秒运行一次,如果没有发生任何更改,则不会存储数据,但这还不足以让它在我眼中被视为版本控制,因为文件可能会在第二

答案 9 :(得分:1)

也许它们基本相同,直到你添加“好”这个词。

  • “好”VCS非常快。
  • “good”VCS允许多个更改源(多个用户)。
  • “good”VCS允许合并。
  • “好”VCS具有元数据,如用户提供的描述

  • “好”备份按地理位置分发

  • “好”备份会自动生效。

答案 10 :(得分:1)

我认为你可以形成一个参数,用于将备份与VCS结合在一起,或者将它们视为完全独立的。但我认为您无法避免谈论VCS的各个功能,因为它是将VCS与备份解决方案区分开来的功能:

  • 跟踪谁做出了哪些改变。
  • 为每项更改附上说明,以解释更改背后的原因。
  • (主要)由多个用户进行并发访问,可能来自非常不同的位置。

在我看来,这些特征是定义的。如果忽略它们,则VCS与增量备份解决方案基本相同。

如果查看分布式VCS,您可能会发现跟踪分支的概念比非分布式VCS更强。也就是说,可能没有一个头/主干分支,但在任何给定时间都有几个分支。这是我遇到的没有备用解决方案的问题。

答案 11 :(得分:1)

版本控制基本上是一个允许多个用户贡献的自动备份系统。像CVS这样的软件还有更多功能,但是,它是一个备用系统。这并不意味着你应该手动备份而不是使用版本控制,但是,它们只是处于相同的计算领域。

答案 12 :(得分:1)

版本控制保留了已更改的历史记录,并且大多数版本控制系统仅存储两个版本之间的差异,而不是所有版本。备份存储所有内容,除非您手动执行,否则它们没有历史记录。备份通常效率低下。但是版本控制系统对二进制文件的效率不高。

答案 13 :(得分:1)

我认为备份是一个非常基本的版本控制系统。我不推荐它用于很多事情,但如果我的家用电脑上有一个小脚本,我会使用过时的备份而不是全功能的VCS。这没关系,因为我是唯一一个更改文件的人,所以我不需要担心冲突或谁做出了改变。

答案 14 :(得分:0)

备份系统为了将其用于版本控制而具有的最低要求是对离散备份项进行增量备份和还原。其他功能(协作,分支,差异比较)可以使其成为更好的VCS系统,但只要您可以控制版本,只要您可以有可靠的访问权限来检索和回滚到已备份的项目的增量不同版本,可以将它用作“VCS”。因此,我认为备份和版本控制系统之间的根本区别在于您使用系统执行的操作。特别是如果您愿意,可以使用VCS作为备份系统。

答案 15 :(得分:0)

他们完全不相关的事情。将版本控制视为一种“时间机器”,您可以使用它来与代码一起来回移动。

答案 16 :(得分:0)

在基本级别,版本控制和备份之间没有区别。版本控制系统是对每个更改进行的增量备份。一个基本的非分布式VCS,如一个开发人员使用的CVS,只会创建对文本文件所做的每个更改的备份。

版本控制超出基本备份的地方在于为比较版本而提供的其他工具,合并多个开发人员所做的更改,标记版本以进行发布或测试,以及执行其他操作以使这些单独版本成为可能。