一、基本介紹
rsync是一個數據同步工具,能夠快速地在不同的主機之間同步文件,特別適合大容量數據同步,並且可以通過壓縮和遞增的方式來節省帶寬。
rsync的原理是比較源文件和目標文件的差異,只傳輸差異部分,因此傳輸的數據量很小,傳輸速度很快。rsync支持文件同步操作,或遠程數據同步操作,並具有很強的擴展性。
rsync的應用場景非常廣泛,在軟件部署、備份恢復、網站部署、開發聯調等方面都有重要的作用。
二、下載文件
使用rsync下載文件,需要指定要下載的文件和目標主機,以及文件保存位置。
rsync [options] source destination
例如,要從遠程主機11.22.33.44下載文件/data/files/data.txt到本地目錄/tmp中,可以使用以下命令:
rsync -avz --progress 11.22.33.44:/data/files/data.txt /tmp/
其中,-avz參數指定以歸檔模式傳輸、壓縮傳輸、保留元數據,–progress參數可以輸出傳輸進度。
三、同步目錄
使用rsync同步目錄,需要指定要同步的目錄及目標主機,以及同步方式。
rsync -options source destination
例如,要將本地目錄/tmp/data同步到遠程主機11.22.33.44的目錄/data,可以使用以下命令:
rsync -avz --delete /tmp/data/ 11.22.33.44:/data/
其中,-delete參數指定刪除目標主機上與源目錄中不匹配的文件,保持目錄完全一致;注意,在同步目錄時需要加上目錄後綴”/”。
四、過濾文件
使用rsync同步文件時,可以使用–exclude和–include參數過濾文件。
rsync -options --exclude='pattern' source destination
例如,要將本地目錄/tmp/data同步到遠程主機11.22.33.44的目錄/data,但不包含文件名中包含「.log」和「.bak」的文件:
rsync -avz --delete --exclude='*.log' --exclude='*.bak' /tmp/data/ 11.22.33.44:/data/
–exclude參數指定要排除的文件,可以使用通配符;–include參數則指定要包含的文件。
五、本地同步
rsync不僅可以用於跨主機之間同步文件,也可以用於在同一台主機的不同目錄之間同步文件,只需要指定本地路徑即可。
rsync -options source destination
例如,將/tmp/data目錄同步到/var/data目錄:
rsync -avz --delete /tmp/data/ /var/data/
同樣支持文件和目錄的同步方式,以及過濾文件。
六、遠程複製
rsync支持在不同主機之間複製文件,可以使用ssh協議保證安全性。
rsync -options -e "ssh" source user@destination:target
例如,將遠程主機11.22.33.44的/data/files/data.txt複製到遠程主機55.66.77.88的/data/下:
rsync -avz --progress -e "ssh" 11.22.33.44:/data/files/data.txt user@55.66.77.88:/data/
其中,-e參數指定使用ssh加密方式傳輸數據,需要輸入登錄密碼或者使用公鑰認證方式。
七、分塊傳輸
rsync支持文件分塊傳輸,可以保證在網絡不穩定的環境下,傳輸的數據不會全部丟失。文件分塊傳輸需要指定參數–block-size,可以根據實際情況調整塊大小。
rsync -options --block-size=blocksize source destination
例如,將本地代碼目錄/tmp/code同步到遠程主機11.22.33.44的/data/code目錄,分塊大小設置為512K:
rsync -avz --delete --block-size=512K /tmp/code/ 11.22.33.44:/data/code/
八、總結
rsync是一個非常實用的數據同步工具,可以快速、安全、高效地完成文件和目錄的同步操作,尤其適合大容量數據同步和不同主機之間的文件傳輸。
在使用rsync時,需要注意指定的參數和選項,以及目標主機和目錄,避免數據出錯或者誤刪除。
原創文章,作者:SMDZJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/334826.html