linux發行版中大多都自帶rsync,不過版本比較低,一般都是2.6.X
在2.X的版本中,rsync備份時都是先列表再備份(添加或者刪除),在處理大量文件時,會耗費比較多的內存。
備份的時候,rsync掃描到的每個文件(目錄也一樣),在它的列表中約占100字節的內存,如果加了--delete參數的話,占用的內存會更多。
例如我這里一臺服務器,約800萬的圖片,而且更新比較頻繁,文件數增長比較快,差不多每天增加約10萬張。備份的時候,rsync大約占用了將近2G的內存,大量內存的占用,造成服務器物理內存不足,進而使用到swap,然后產生更高的iowait(交換內存),進而造成rsync列表更慢,并且影響到服務器上的業務。
對于這樣的情況,在rsync 3.X出現之前,人們普遍給出的建議是把備份操作給拆分成若干個小的備份操作。比如原來有10個圖片目錄一起備份,現在拆成10個備份操作,每次只備份其中一個。另外,還有人建議減小目錄的深度,這樣可以減小目錄的數量,可以減少rsync占用的內存。另外還有個叫做digisync的軟件,是專門用來備份G級數量的文件的。
rsync 3.X采用的是incremental file list,與原來的 2.X相比,現在是一邊列表一邊備份(添加或刪除)。這對于大量文件的備份操作來說,無疑節省了很多時間。
實測發現,rsync 3.0.4備份時占用的內存大約時4M,跟一個apache進程占用的內存差不多。
rsync 的主頁在http://samba.anu.edu.au/rsync/ 目前最新穩定版本為 rsync-3.1.1
然后運行 rsync --version 來看看版本號
需要注意的是,源主機和目的主機必須都升級到 rsync 3.X 才能使用到rsync 3.X的新特性。
值得一提的是,自從 2006年11月6號發布 version 2.6.9以后,一直到08年3月才發布3.0,使得很長一段時間內,大家不得不找各種各樣的辦法來處理大量的文件備份操作
新聞熱點
疑難解答
圖片精選