一、rsync的概述
rsync是類unix系統下的資料鏡像備份工具,從軟體的命名上就可以看出來了——remotesync。rsync是Linux系統下的檔案同步和資料轉送工具,它採用“rsync”演算法,可以將一個客戶機和遠程檔案伺服器之間的檔案同步,也可以在本地系統中將資料從一個分區備份到另一個分區上。如果rsync在備份過程中出現了資料轉送中斷,恢複後可以繼續傳輸不一致的部分。rsync可以執行完整備份或增量備份。它的主要特點有:
1.可以鏡像儲存整個分類樹和檔案系統;
2.可以很容易做到保持原來檔案的許可權、時間、軟永久連結;無須特殊許可權即可安裝;
3.可以增量同步處理資料,檔案傳輸效率高,因而同步時間短;
4.可以使用rcp、ssh等方式來傳輸檔案,當然也可以通過直接的socket串連;
5.支援匿名傳輸,以方便進行網站鏡象等;
6.加密傳輸資料,保證了資料的安全性;
二、鏡像目錄與內容
rsync -av duying /tmp/test
查看/tmp/test目錄,我們可以看到此命令是把duying這個檔案夾目錄連同內容全部考到目前的目錄下
rsync -avduying/ /tmp/test 注意:比上一條命令多了符號“/”
再次查看/tmp/test目錄,我們發現沒有duying這個目錄,只是看到了目錄中的內容
三、增量備份本地檔案
rsync -avzrtopgL --progress /src /dst
-v是“--verbose”,即詳細模式輸出; -z表示“--compress”,即傳輸時對資料進行壓縮處理;
-r表示“--recursive”,即對子目錄以遞迴的模式處理;-t是“--time”,即保持檔案時間資訊;
-o表示“owner”,用來保持檔案屬主資訊;-p是“perms”,用來保持檔案許可權;
-g是“group”,用來保持檔案的屬組資訊;
--progress用於顯示資料鏡像同步的過程;
四、鏡像同步備份檔案
rsync -avzrtopg --progress --delete /src /dst
--delete選項指定以rsync伺服器端為基礎進行資料鏡像同步,也就是要保持rsync伺服器端目錄與用戶端目錄的完全一致;
--exclude選項用於排除不需要傳輸的檔案類型;
五、設定定時備份策略
crontab -e
30 3 * * * rsync-avzrtopg --progress --delete --exclude "*access*"
--exclude "*debug*" /src /dst
如果檔案比較大,可使用nohup將進程放到後台執行。
nohup rsync -avzrtopgL --progress /data/opt/data2/ >/var/log/$(date+%Y%m%d).mail.log &
六、rsync的優點與不足
與傳統的cp、tar備份方式對比,rsync具有安全性高、備份迅速、支援增量備份等優點,通過rsync可以解決對即時性要求不高的資料備份需求,例如,定期地備份檔案伺服器資料到遠端伺服器,對本地磁碟定期進行資料鏡像等。
但是隨著系統規模的不斷擴大,rsync的缺點逐漸被暴露了出來。首先,rsync做資料同步時,需要掃描所有檔案後進行對比,然後進行差量傳輸。如果檔案很大,掃面檔案是非常耗時的,而且發生變化的檔案往往是很少一部分,因此rsync是非常低效的方式。其次,rsync不能即時監測、同步資料,雖然它可以通過Linux守護進程的方式觸發同步,但是兩次觸發動作一定會有時間差,可能導致伺服器端和用戶端資料出現不一致。