天天看點

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

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:

./

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

總結

使用該指令,最吸引我的地方就是可以實作增量同步,而不是全量同步。這樣減少帶寬的消耗,也加快了傳輸的速度。

原文位址

https://www.cnblogs.com/qqblog/p/11788969.html

繼續閱讀