Linux檔案同步工具之rsync
學習背景
1.最近公司的專案在使用jenkins做自動化構建,因為jenkins在構建時是比較耗效能的,便單獨使用了一臺伺服器做構建伺服器。但是個人覺得這樣成本過高,單獨拿一臺伺服器來構建並且該伺服器配置不能太差。便想著通過在本地搭建一臺jenkins服務,做構建使用。但是這樣有一個問題,無法使用webhooks,便選擇的輪訓構建。其實可以使用內網穿透的方式解決的,該例項還在學習中,也實驗成功了,由於使用還不是特別熟悉,後期單獨寫一篇文章分享。
2.在jenkins構架時,我們需要配置一個work目錄,如/root/jenkins/workspace/daodao_system這樣的目錄,但是我們需要使用nginx配置專案目錄,肯定是不可能配置到這個jenkins的工作目錄的。通過了解,Linux的同步命令rsync命令可以實現檔案同步。這裡指的檔案同步就是將jenkins工作目錄下面的檔案同步到我們指定的目錄(如我們nginx配置的專案目錄)。並且rsync同步命令具備,高效、頻寬消耗低、支援複製連結、裝置、屬主、屬組、許可權等。
命令介紹
rsync是遠端(或本地)複製和同步檔案最常用的命令。 藉助rsync命令,你可以跨目錄,跨磁碟和跨網路遠端與本地資料進行復制和同步。舉例來說:在兩臺Linux主機之間進行資料備份和映象。本文介紹在Linux主機上進行遠端和本地傳輸檔案的常見用法,不需要root賬戶也可以允許rsync。
rsync命令特點
1.高效地複製同步資料到對端,或者對端到本地。
2.支援複製連結、裝置、屬主、屬組、許可權。
3.比scp(Secure Copy)更快。rsync使用遠端更新協議( remote-update protocol ),這允許僅僅傳輸兩組檔案之間的差異。對於首次傳輸,它將檔案或目錄的全部內容從源複製到目標,但是從下次起,它僅將變化部分複製到目標。
4.rsync消耗較少的頻寬,因為它使用壓縮和解壓縮方法,同時傳送和接收資料兩端。HTTP壓縮技術。
命令的安裝
本演示文章的環境是centos7.0的版本,可以直接使用。如需安裝可以參考該文章
命令語法格式
rsync [options] 資源源目錄 目標目錄
-v : 詳細模式輸出
-r : 遞迴拷貝資料,但是傳輸資料時不保留時間戳和許可權
-a : 歸檔模式, 歸檔模式總是遞迴拷貝,而且保留符號連結、許可權、屬主、屬組時間戳
-z : 壓縮傳輸
-h : human-readable
--progress: 顯示傳輸過程
--exclude=PATTERN 指定排除傳輸的檔案模式
--include=PATTERN 指定需要傳輸的檔案模式
--delete 同步時,刪除那些DST中有,而SRC沒有的檔案
--max-size:限定傳輸檔案大小的上限
--dry-run:顯示那些檔案將被傳輸,並不會實際傳輸
--bwlimit:限制傳輸頻寬
-W:拷貝檔案,不進行增量檢測
使用案例
本地同步某個檔案
[root@iZ7eetumtw8c9jZ jenkins]# rsync -zvrh remoting.jar /root/work/
sending incremental file list
created directory /root/work
remoting.jar
sent 796.37K bytes received 68 bytes 1.59M bytes/sec
total size is 872.44K speedup is 1.10
同步結果檢視
[root@iZ7eetumtw8c9jZ jenkins]# ll /root/work/
total 852
-rw-r--r-- 1 root root 872440 Nov 3 20:03 remoting.jar
同步某個目錄
[root@iZ7eetumtw8c9jZ jenkins]# rsync -zvrh workspace/ /root/work/
sending incremental file list
公司伺服器測試/tests/Unit/
公司伺服器測試/tests/Unit/ExampleTest.php
公司伺服器測試@tmp/
sent 18.82M bytes received 7.30K bytes 7.53M bytes/sec
total size is 29.87M speedup is 1.59
同步結果檢視
[root@iZ7eetumtw8c9jZ jenkins]# ll /root/work/
total 868
-rw-r--r-- 1 root root 872440 Nov 3 20:03 remoting.jar
drwxr-xr-x 11 root root 4096 Nov 3 20:05 公司伺服器測試
drwxr-xr-x 2 root root 4096 Nov 3 20:04 公司伺服器測試@tmp
同步遠端目錄
[root@tecmint]$ rsync -avz rpmpkgs/ [email protected]:/home/
[email protected]'s password:
sending incremental file list
./
httpd-2.2.3-82.el5.centos.i386.rpm
mod_ssl-2.2.3-82.el5.centos.i386.rpm
nagios-3.5.0.tar.gz
nagios-plugins-1.4.16.tar.gz
sent 4993369 bytes received 91 bytes 399476.80 bytes/sec
total size is 4991313 speedup is 1.00
總結
使用該命令,最吸引我的地方就是可以實現增量同步,而不是全量同步。這樣減少頻寬的消耗,也加快了傳輸的速度。至於該命令同步的原理,可以參考該文章
本文轉自微信公眾號 深夜有話聊 釋出!