我正在考虑使用版本控制系统来确保如果需要的话,我可以及时回到~ 中所有文档的某个特定版本。
鉴于此,最适合此目的的工具是什么:
- 我对版本控制系统没有太多经验
- 一些文件将是纯文本文件,但也有一些 Libre-Office 文件
该工具应该:
- 易于设置、运行和维护
- 具有易于理解的配置选项(跟踪哪些目录、跟踪多长时间、捕获更改的频率等)
- 最好也有一个 GUI 前端
- 能够恢复已删除的文件
最适合我的最佳/最广泛使用的工具是什么?
答案1
我用过远程医疗,颠覆,git以及一些商业软件包。我刚刚将我的个人 VCS 从 CVS 迁移到 git(我原以为这会比实际更困难,我早就应该这么做了)。
我会推荐 git。这取决于你要找什么。
我是一名菜鸟,在版本控制系统方面没有太多经验
git学习曲线可能会更长,尤其是如果你有使用旧版 VCS 的经验。如果你没有使用过旧版 VCS,你的学习曲线可能会更短。
学习 git 的最好方法是下载这本书Scott Chacon 的 Pro Git(免费),创建一个测试存储库(mkdir <project name>; cd <project name>; git init
),然后开始修改。创建存储库实际上不需要花费任何精力,也不用担心在测试存储库中搞砸什么,因为每个存储库都是独立的。可以轻松删除存储库(cd <project name>; rm -rf .git
)。
一些文件将是纯文本文件,但会有一些 Libre-Office 文件
git 对文件类型 (ASCII 与二进制) 没有区分,但是 ASCII 文件最适合查看差异和合并冲突。
易于设置、运行和维护
git 有多种配置方式,这完全取决于您的需求。首先,正如许多人所展示的那样,您所要做的就是安装 git ( sudo apt-get install --install-recommends git-core
) 并创建一个存储库(如上所示)。如果您在多台机器上工作,您可以通过 ssh 设置 git(书中有介绍)。更好的是,随着需求的扩大,您不会失去已经完成的工作。
具有易于理解的配置选项(跟踪哪些目录、跟踪多长时间、捕获更改的频率等)
您可以拥有一个大型存储库,也可以将其分解为单个项目或单个文件。再次创建一个 git 存储库并试用它,看看哪些可行,哪些不可行。
最好也有一个 GUI 前端
有许多git 图形界面专门用于许多不同的任务。但是,强烈建议从命令行学习 git。要开始,您只需要学习几个命令(、git init
、git status
git diff
、git add
、git rm
、git commit
)。命令行还可以帮助您完成需要执行的任务。例如:git push
git pull
git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: systems/ion/setup.txt
# modified: systems/dogstar/teardown.txt
# modified: applications/help.html
# modified: applications/readme.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# applications/faq.html
no changes added to commit (use "git add" and/or "git commit -a")
如果你更喜欢使用 GUI,智能Git对新手很友好。
能够恢复已删除的文件
是的,只要文件已经提交,git 可以恢复其任意版本。
最适合我的最佳/最广泛使用的工具是什么?
git 被广泛使用。至于最好的,它是最好的之一,即使不是最好的。但最好的,更多的是个人观点,也取决于具体情况。
答案2
听起来,我认为使用诸如git
Mercurialhg
或bzr
之类的版本控制svn
并不完全适合您的需求,因为它们主要针对源文件,而不是二进制数据。 因此,我想在这里添加一些其他可能性。
我认为一个好的解决方案是基于云的备份服务。我个人使用蜘蛛橡树,效果确实很好。
重复
用作duplicity
其后端。
优点
- Ubuntu 自己的备份解决方案
- 好简单
- 您可以选择多种备份存储位置
缺点
- 更多是备份解决方案,而不是版本控制
- 控制有限
如果尚未安装,请安装它:
sudo apt-get install deja-dup
如果你输入 ,你就可以在 dash 中找到它backup
。
蜘蛛橡树
优点
- Ubuntu 软件包可用,添加存储库至
sources.list
(自动更新) - 您可以选择任何文件夹进行备份(与 Dropbox 不同)
- 在后台运行,监视这些文件夹中的变化并仅上传变化(节省带宽),这是自动且立即的
- 客户端加密(与 Dropbox 不同)
- 识别重复项
- 在服务器上压缩文件
- 在服务器上保留已删除的文件和旧版本(只要您有可用的存储空间),除非您明确删除它们
- 不错的图形用户界面
- 可以在计算机之间同步(Linux / Windows / OS X,移动客户端只读)
- 基于云 - 即使你的硬盘崩溃了,你仍然有备份
缺点
- 基于云 - 需要互联网连接
- 并非完全开源
- 只有 2 GB(厚颜无耻的广告:如果你想要额外的 GB,你可以使用我的引荐链接)
点击此处下载:SpiderOak 下载
rdiff-备份
优点
- 可以进行本地或远程备份
- 细粒度控制
rsync
算法,仅跟踪变化- 节省空间(未改变的文件不受影响)
- 文件权限也可以被存储
- 可以保留最近 n 个版本或最近 n 天的备份
缺点
- 必须由 cronjob 运行或明确
- 命令行实用程序(如果这不是你想要的),但有一个可用的 GUI:皮背包
通过以下方式安装:
sudo apt-get install rdiff-backup pybackpack
BTRFS 快照
虽然不太适合胆小的人,但可以将/home
目录放在单独的 BTRFS 分区上,并偶尔创建快照
优点
- 非常节省空间,只有更改的文件才会再次存储
- 跟踪全部分区的数据
- 快速地
- 挂载任何旧快照以访问先前版本
缺点
- BTRFS 仍然比较新
- 对新手不太友好
- 仅限命令行
- 需要对系统进行一些调整
- 不是备份解决方案——如果您的硬盘崩溃,所有版本都会丢失
这里有一篇关于Ubuntu 帮助页面。
答案3
众所周知的版本控制系统有 CVS、SVN(Subversion)和 GIT。没有必要考虑老旧的 CVS,剩下的就是 SVN 和 GIT。
对于您有限的用途,我认为选择哪一个并不重要,所以我的建议是看看你认识的人谁使用其中一种,然后选择那个:)
如果您正在寻找更复杂内容的易用性(代码的真实版本控制等),我建议您使用 GIT。基本上“他们”说 SVN 是 CVS 的更新,而 GIT 又是 SVN 的“更新”。我个人认为 GIT 相对于 SVN 的优势专门针对多个用户和多个分支,所以也许您不必担心。
另一方面,为什么不尝试一些更好的选择呢,你永远不知道自己将来想做什么。
请查看一些关于它们的信息
答案4
我认为你不会想这么做。源代码控制就是为了这个目的,源代码控制。大多数都不能很好地处理二进制文件(如图像、音乐、电影等)。
此外,SCM 还会逐行向您显示已更改的数据块。因此,每次登录或注销时,您都会更改一些数据。您必须一直“合并”或“提交”。我几乎可以肯定这不是您想要的。
然而,有几个确实很好的工具。
Back-In-Time 很棒,并且有一个 diff 查看器。Deja Dupe 是默认的,但我认为它的功能不是很丰富。grsync 可以为您提供已更改的备份文件列表。普通的 rsync 也是一个选项。
如果您坚持使用 SCM,那么我推荐使用 git,但托管在本地。添加一个排除所有二进制文件的 .gitignore。更好的是,您可以尝试仅控制您的配置目录。同样,您必须注意二进制文件。