
BUP 并不單純是Git, 而是一款基于Git 的軟件. 一般情況下, 我使用 rsync 來備份我的文件, 而且迄今為止一直工作的很好. 唯一的不足就是無法把文件恢復(fù)到某個特定的時間點. 因此, 我開始尋找替代品, 結(jié)果發(fā)現(xiàn)了 BUP, 一款基于 git 的軟件, 它將數(shù)據(jù)存儲在一個倉庫中, 并且有將數(shù)據(jù)恢復(fù)到特定時間點的選項.
要使用 BUP, 你先要初始化一個空的倉庫, 然后備份所有文件. 當(dāng) BUP 完成一次備份是, 它會創(chuàng)建一個還原點, 你可以過后還原到這里. 它還會創(chuàng)建所有文件的索引, 包括文件的屬性和驗校和. 當(dāng)要進行下一個備份時, BUP 會對比文件的屬性和驗校和, 只保存發(fā)生變化的數(shù)據(jù). 這樣可以節(jié)省很多空間.
安裝 BUP (在 Centos 6 7 上測試通過)
首先確保你已經(jīng)安裝了 RPMFORGE 和 EPEL 倉庫
[techarena51@vps ~]$ sudo yum groupinstall "Development Tools"[techarena51@vps ~]$ sudo yum install python python-devel[techarena51@vps ~]$ sudo yum install fuse-python pyxattr pylibacl[techarena51@vps ~]$ sudo yum install perl-Time-HiRes[techarena51@vps ~]$ git clone git://github.com/bup/bup[techarena51@vps ~]$ cd bup[techarena51@vps ~]$ make[techarena51@vps ~]$ make test[techarena51@vps ~]$ sudo make install
在 CentOS 7 上, 當(dāng)你運行 "make test" 時可能會出錯, 但你可以繼續(xù)運行 "make install".
第一步時初始化一個空的倉庫, 就像 git 一樣.
[techarena51@vps ~]$ bup init
默認情況下, bup 會把倉庫存儲在 "~/.bup" 中, 但你可以通過設(shè)置環(huán)境變量 "export BUP_DIR=/mnt/user/bup" 來改變設(shè)置.
然后, 創(chuàng)建所有文件的索引. 這個索引, 就像之前講過的那樣, 存儲了一系列文件和它們的屬性及 git 目標(biāo) id (sha1 哈希表). (屬性包括了軟鏈接, 權(quán)限和不可改變字節(jié))
bup index /path/to/filebup save -n nameofbackup /path/to/file#Example[techarena51@vps ~]$ bup index /var/www/htmlIndexing: 7973, done (4398 paths/s).bup: merging indexes (7980/7980), done.[techarena51@vps ~]$ bup save -n techarena51 /var/www/htmlReading index: 28, done.Saving: 100.00% (4/4k, 28/28 files), done.bloom: adding 1 file (7 objects).Receiving index from server: 1268/1268, done.bloom: adding 1 file (7 objects).
"BUP save" 會把所有內(nèi)容分塊, 然后把它們作為對象儲存. "-n" 選項指定備份名.
你可以查看備份列表和已備份文件.
[techarena51@vps ~]$ bup lslocal-etc techarena51 test#Check for a list of backups available for my site[techarena51@vps ~]$ bup ls techarena512014-09-24-064416 2014-09-24-071814 latest#Check for the files available in these backups[techarena51@vps ~]$ bup ls techarena51/2014-09-24-064416/var/www/htmlapc.php techarena51.com wp-config-sample.php wp-load.php
在同一個服務(wù)器上備份文件從來不是一個好的選擇. BUP 允許你遠程備份網(wǎng)頁文件, 但你必須保證你的 SSH 密鑰和 BUP 都已經(jīng)安裝在遠程服務(wù)器上.
bup index path/to/dirbup save-r remote-vps.com -n backupname path/to/dir
例子: 備份 "/var/www/html" 文件夾
[techarena51@vps ~]$bup index /var/www/html[techarena51@vps ~]$ bup save -r user@remotelinuxvps.com: -n techarena51 /var/www/htmlReading index: 28, done.Saving: 100.00% (4/4k, 28/28 files), done.bloom: adding 1 file (7 objects).Receiving index from server: 1268/1268, done.bloom: adding 1 file (7 objects).
恢復(fù)備份
登入遠程服務(wù)器并輸入下面的命令
[techarena51@vps ~]$bup restore -C ./backup techarena51/latest#Restore an older version of the entire working dir elsewhere[techarena51@vps ~]$bup restore -C /tmp/bup-out /testrepo/2013-09-29-195827#Restore one individual file from an old backup[techarena51@vps ~]$bup restore -C /tmp/bup-out /testrepo/2013-09-29-201328/root/testbup/binfile1.bin
唯一的缺點是你不能把文件恢復(fù)到另一個服務(wù)器, 你必須通過 SCP 或者 rsync 手動復(fù)制文件.
通過集成的 web 服務(wù)器查看備份.
bup web#specific portbup web :8181
你可以使用 shell 腳本來運行 bup, 并建立一個每日運行的定時任務(wù).
#!/bin/bashbup index /var/www/html bup save -r user@remote-vps.com: -n techarena51 /var/www/html
BUP 并不完美, 但它的確能夠很好地完成任務(wù). 我當(dāng)然非常愿意看到這個項目的進一步開發(fā), 希望以后能夠增加遠程恢復(fù)的功能.