第37章 Gistore
当了解了etckeeper之后,您可能会有如我一样的疑问:“有没有像etckeeper一样的工具,但是能备份任意的文件和目录呢?”
我在Google上搜索类似的工具无果,终于决定动手开发一个,因为无论是我还是我的客户,都需要一个更好用的备份工具。这就是Gistore。
Gistore=Git+Store
2010年1月,我在公司的博客上发表了Gistore 0.1版本的消息,参见:http://blog.ossxp.com/2010/01/406/。并将Gistore的源代码托管在了Github上,参见:http://github.com/ossxp-com/gistore。
Gistore的出现是受到了etckeeper的启发,通过Gistore用户可以把系统中任何目录的数据纳入到备份中,定制非常简单和方便。Gistore的特点如下:
使用Git作为数据后端。数据回复和历史查看等均使用熟悉的Git命令。
每次备份即为一次Git提交,支持文件的添加/删除/修改/重命名等。
每次备份的日志自动生成,内容为此次修改的摘要信息。
支持备份回滚,可以设定保存备份历史的天数,让备份的空间占用维持在一个相对稳定的水平上。
支持跨卷备份。备份的数据源可以来自任何卷/目录或文件。
备份源如果已经Git化,也能够备份。例如/etc目录因为etckeeper被Git化,仍然可以对其用Gistore进行备份。
多机异地备份非常简单,使用Git克隆即可解决。可以采用Git协议、HTTP,或者更为安全的SSH协议。
说明:Gistore目前只能运行在Linux、Mac OS X等类Unix操作系统上,因为在备份中使用了mount、umount命令和/或FUSE相关命令。
37.1 Gistore的安装
37.1.1 软件依赖
Gistore运行时需要将备份项逐一挂载到备份工作区中,因此需要安装相应的挂载工具。
如果在Linux上以普通用户的身份运行Gistore,或者在Mac OS X上执行,则需要安装bindfs[1],以便能够将备份目录挂载到Gistore工作区中。
如果在Linux上以管理员的身份运行,则可以不安装bindfs,因为Linux下的mount—rbind命令可以实现备份目录到Gistore工作区的挂载。
如果以普通用户的身份执行,当运行挂载工具遇到授权问题时,如果安装并且正确配置了sudo命令,则会自动调用sudo命令执行。