以前使用VPS的時候,包括本博客一類的個人網站,一般都用SH腳本利用FTP備份(詳情見我之前的一篇博客),這種方法的優點是簡單快速。但是最近在給公司的網站做備份時,卻遇到了不小的問題,公司的網站數據量較大,有30多個G,如果用FTP備份的話,足足花了我一個上午,更嚴重的是滿足3天備份數據的話,磁盤空間暴漲;如果設置成自動備份的話,每天硬盤要壓縮30G數據,然後再傳輸到備份服務器,我擔心不到半月硬盤就得掛掉!
以前做數據庫管理的時候,在遇到備份數據較大的時候,可以進行增量備份,原理雖然一樣,但是沒有接觸過文件增量備份,還好我們有GOOGLE,參考了網上常用的一些網站增量備份的辦法,發現一個開源的軟件rsync;
它的特性如下:
1、可以鏡像保存整個目錄樹和文件系統。
2、可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。
3、無須特殊權限即可安裝。
4、優化的流程,文件傳輸效率高。
5、可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。
公司的網站服務器為linux,備份服務器為windows,並不需要考慮實時備份,做到每天備份即可,具體的方法如下:
1.首先在linux服務器上面安裝rsync,
#wget http://rsync.samba.org/ftp/rsync/rsync-3.0.8.tar.gz
#tar zxvf rsync-3.0.8.tar.gz
#cd rsync-3.0.8
#./configure
#make
#make install
2.在vps上創建rsyncd的配置文件/etc/rsyncd.conf,內容如下:
uid = root # 備份以什麼身份進行,用戶ID
gid = root # 備份以什麼身份進行,組ID
#注意這個用戶ID和組ID,如果要方便的話,可以設置成root,這樣rsync幾乎就可
#以讀取任何文件和目錄了,但是也帶來安全隱患。建議設置成只能讀取你要備
#份的目錄和文件即可。
#use chroot = no
max connections = 0 # 最大連接數沒有限制
pid file = /var/log/rsync/rsyncd.pid
lock file = /var/log/rsync/rsync.lock
log file = /var/log/rsync/rsyncd.log
[web] # 指定認證的備份模塊名
path = /home/ # 需要備份的目錄
comment = BACKUP wwwroot # 注釋
ignore errors # 忽略一些無關的IO錯誤
read only = false # 設置為只讀
list = false # 不允許列文件
#hosts allow = 210.51.0.80 #允許連接服務器的主機IP地址
#hosts deny = 0.0.0.0/0.0.0.0 #禁止連接服務器的主機IP地址
#auth users = wwek # 認證的用戶名,如果沒有這行,則表明是匿名(建議使用匿名,配合指定運行單一IP地址備份即可)
secrets file = /etc/rsyncd.secrets # 認證文件名,用來存放密碼
3.由於指定了密碼文件,該文件只能是root用戶可讀寫的,注意,出於安全目的,這個文件的屬性必需是只有屬主可讀,否則rsync將拒絕運行。我們可以設置它的屬性為600:
# chmod 600 /etc/rsyncd.secrets
# mkdir /var/log/rsync
4.服務器上啟動rsyncd服務:
# /usr/local/bin/rsync –daemon
5.windows安裝配置cwrsync 客戶端 cwrsync也就是windows上的rsync了。
然後執行備份命令
rsync -vzrtopg –progress –delete [服務器IP]::web [/cygdrive/f/backup]
其中web是服務器配置文件中的模塊名,/cygdrive/f/backup是指備份到本地F:/backup