BUP并不单纯是Git,而是一款基于Git的软件.一般情况下,我使用rsync来备份我的文件,而且迄今为止一直工作的很好.唯一的不足就是无法把文件恢复到某个特定的时间点.因此,我开始寻找替代品,结果发现了BUP,一款基于git的软件,它将数据存储在一个仓库中,并且有将数据恢复到特定时间点的选项.
要使用BUP,你先要初始化一个空的仓库,然后备份所有文件.当BUP完成一次备份是,它会创建一个还原点,你可以过后还原到这里.它还会创建所有文件的索引,包括文件的属性和验校和.当要进行下一个备份时,BUP会对比文件的属性和验校和,只保存发生变化的数据.这样可以节省很多空间.
安装BUP(在Centos6&7上测试通过)首先确保你已经安装了RPMFORGE和EPEL仓库
[techarena51@vps~]$sudoyumgroupinstall"DevelopmentTools"[techarena51@vps~]$sudoyuminstallpythonpython-devel[techarena51@vps~]$sudoyuminstallfuse-pythonpyxattrpylibacl[techarena51@vps~]$sudoyuminstallperl-Time-HiRes[techarena51@vps~]$gitclonegit://github.com/bup/bup[techarena51@vps~]$cdbup[techarena51@vps~]$make[techarena51@vps~]$maketest[techarena51@vps~]$sudomakeinstall在CentOS7上,当你运行"maketest"时可能会出错,但你可以继续运行"makeinstall".
第一步时初始化一个空的仓库,就像git一样.
[techarena51@vps~]$bupinit默认情况下,bup会把仓库存储在"~/.bup"中,但你可以通过设置环境变量"exportBUP_DIR=/mnt/user/bup"来改变设置.
然后,创建所有文件的索引.这个索引,就像之前讲过的那样,存储了一系列文件和它们的属性及git目标id(sha1哈希表).(属性包括了软链接,权限和不可改变字节)
bupindex/path/to/filebupsave-nnameofbackup/path/to/file#Example[techarena51@vps~]$bupindex/var/www/htmlIndexing:7973,done(4398paths/s).bup:mergingindexes(7980/7980),done.[techarena51@vps~]$bupsave-ntecharena51/var/www/htmlReadingindex:28,done.Saving:100.00%(4/4k,28/28files),done.bloom:adding1file(7objects).Receivingindexfromserver:1268/1268,done.bloom:adding1file(7objects)."BUPsave"会把所有内容分块,然后把它们作为对象储存."-n"选项指定备份名.
你可以查看备份列表和已备份文件.
[techarena51@vps~]$buplslocal-etctecharena51test#Checkforalistofbackupsavailableformysite[techarena51@vps~]$buplstecharena512014-09-24-0644162014-09-24-071814latest#Checkforthefilesavailableinthesebackups[techarena51@vps~]$buplstecharena51/2014-09-24-064416/var/www/htmlapc.phptecharena51.comwp-config-sample.phpwp-load.php在同一个服务器上备份文件从来不是一个好的选择.BUP允许你远程备份网页文件,但你必须保证你的SSH密钥和BUP都已经安装在远程服务器上.
bupindexpath/to/dirbupsave-rremote-vps.com-nbackupnamepath/to/dir例子:备份"/var/www/html"文件夹[techarena51@vps~]$bupindex/var/www/html[techarena51@vps~]$bupsave-ruser@remotelinuxvps.com:-ntecharena51/var/www/htmlReadingindex:28,done.Saving:100.00%(4/4k,28/28files),done.bloom:adding1file(7objects).Receivingindexfromserver:1268/1268,done.bloom:adding1file(7objects).恢复备份登入远程服务器并输入下面的命令
[techarena51@vps~]$buprestore-C./backuptecharena51/latest#Restoreanolderversionoftheentireworkingdirelsewhere[techarena51@vps~]$buprestore-C/tmp/bup-out/testrepo/2013-09-29-195827#Restoreoneindividualfilefromanoldbackup[techarena51@vps~]$buprestore-C/tmp/bup-out/testrepo/2013-09-29-201328/root/testbup/binfile1.bin唯一的缺点是你不能把文件恢复到另一个服务器,你必须通过SCP或者rsync手动复制文件.
通过集成的web服务器查看备份.
bupweb#specificportbupweb:8181你可以使用shell脚本来运行bup,并建立一个每日运行的定时任务.
#!/bin/bashbupindex/var/www/htmlbupsave-ruser@remote-vps.com:-ntecharena51/var/www/htmlBUP并不完美,但它的确能够很好地完成任务.我当然非常愿意看到这个项目的进一步开发,希望以后能够增加远程恢复的功能.