我想使用Git来备份我的家用硬盘,但我也希望将它用作存储在家用硬盘中的项目的版本控制系统。
我该怎么做呢?我是否.gitignore所有项目根文件夹并为它们创建新的存储库?
编辑:
好的,我错误地解释了我想要的东西。我希望有一个改变我的家庭驱动器的历史,就像我可以使用Git一样,我也想支持它。
答案 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以及有关如何备份数据的一些示例:
答案 4 :(得分:2)
答案 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项目作为备份的一种方法。甚至您都可以在同一个项目中使用这两者,仅对所需文件进行跟踪并保留更改。