Git作为备份和版本控制系统

时间:2010-04-04 23:03:41

标签: git

我想使用Git来备份我的家用硬盘,但我也希望将它用作存储在家用硬盘中的项目的版本控制系统。

我该怎么做呢?我是否.gitignore所有项目根文件夹并为它们创建新的存储库?

编辑:

好的,我错误地解释了我想要的东西。我希望有一个改变我的家庭驱动器的历史,就像我可以使用Git一样,我也想支持它。

9 个答案:

答案 0 :(得分:16)

wrote a blog post about this一会儿回来:

  

版本控制系统(SourceSafe可能除外)非常适合跟踪代码。这是为什么?因为它们旨在跟踪代码

     

不幸的是,好的VCS的功能完全不同 - 并且通常完全相反 - 构成良好备份系统的功能。

     

例如,文件所有权。一个好的VCS,非常正确,忽略文件所有权:当我查看别人的代码时,我应该是这些文件的所有者 - 而不是最初创建它们的uid。另一方面,一个好的备份系统将完成其所有功能以保护文件所有权:当我从备份恢复时,我希望/ etc / shaddow由root和/ home /拥有wolever /由wolever拥有。

但是,如果你真的想,请查看bup - 据我所知,它会使用git“正确”进行备份。

答案 1 :(得分:14)

使用rsync进行备份。 使用git进行版本控制。

答案 2 :(得分:3)

我发现backintime-gnome(glade / python,单独的后端?)对于预定的增量备份很有用,它适用于您的每日,每周,每月等。然后Git repos for source files或其他更改 - 关键数据会很好。我没有玩过bachintime-common后端命令,但它们似乎都是python。

我在Ubuntu中使用它,“请记住,Back In Time只是一个GUI。真正的魔力是通过rsync(拍摄快照和恢复),diff(检查是否有某些改变)和cp(制作硬链接)来完成的。 )“。 -http://backintime.le-web.org/documentation/

答案 3 :(得分:2)

您确实希望使用rsync备份数据。 有关rsync的更多信息,请查看以下URL以及有关如何备份数据的一些示例:

http://www.sanitarium.net/golug/rsync_backups_2010.html

答案 4 :(得分:2)

有一些项目旨在解决这个问题:

bup似乎取得了最大的进步:https://github.com/apenwarr/bup

但您可能还想搜索gibak或coldstorage。

答案 5 :(得分:0)

这几乎就像我正在做的那样。我的主目录中有一个git存储库,但我用它来只跟踪那些我可以手动编辑的配置文件。 (这排除了由“现代”桌面环境保存的状态文件以及几乎存储为XML的所有内容。)其他所有内容都进入.gitignore。曾几何时,我决定我的“notes”目录和我的~/.emacs.d应该进入他们自己的存储库,所以我在这些目录中创建了git存储库,让主存储库忽略它们。

我不会将此设置用于备份目的,而是在不同计算机上的帐户之间同步跟踪文件,但我认为这也适用于备份。

答案 6 :(得分:0)

在Windows上,git-extensions和gitGui允许您克隆存储库,这将允许您在没有.gitignore中的所有文件的情况下进行备份。

接下来7压缩它,你就完成了!

答案 7 :(得分:0)

好主意,我实际上每天都在使用它,并且效果很好,直到您的PC在提交中崩溃并破坏您的存储库。第一次发生时,我花了一天的时间来修复所有内容并还原备份,您最终在过程中学到了很多有关git内部的知识,所以这是一个额外的好处。假设您使用的是Linux,我建议将.git dir的本地副本备份在单独的驱动器或任何其他驱动器上,然后将git init备份在操作系统的/根目录下,并使用.gitignore来控制版本。有些文件是“特殊”文件,因此您可能希望默认排除它们,例如/ proc中的文件。您可以精确地观察不同软件对fs所做的事情,并回滚损坏的安装并跟踪配置,日志等,这很容易。我不知道为什么所有这些反对者都说“不做”,因为我这样做了,它非常实用,也很棒。就像我说的那样,当发生意外情况时,唯一的缺点是损坏的回购,但是如果您准备修复已损坏的提交,则只需将已损坏的.git复制到已损坏的.git中即可。

答案 8 :(得分:0)

对于要密切跟踪或进行一些回滚的项目,可以按常规方式使用git。

如果您要上载具有大文件的项目,并且不想为了获取旧文件而签出以前的提交,则可以使用git lfs。如果要在大文件上进行更改,这将使.git文件夹更小:

Git Large File Storage (LFS)使用Git内部的文本指针替换音频样本,视频,数据集和图形等大型文件,同时将文件内容存储在GitHub.com或GitHub Enterprise等远程服务器上。

此解决方案是将Git项目作为备份的一种方法。甚至您都可以在同一个项目中使用这两者,仅对所需文件进行跟踪并保留更改。