rsync的使用

10.28 rsync工具介紹

rsync(remote sync)即遠程同步。rsync不只能夠遠程同步數據(相似於scp),並且能夠本地同步數據(相似於cp),但不一樣於cp或scp的是,它不會覆蓋之前的數據,而是先判斷已經存在的數據和新數據的差別,只有數據不一樣時纔會把不相同的部分覆蓋。安全

rsync的安裝命令爲:yum install -y rsync。服務器

rsync的命令格式:ssh

rsync [選項] ... SRC DEST工具

rsync [選項] ... SRC [ USER@ ]HOST:DESTui

rsync [選項] ... [ USER@ ]HOST: SRC DESTspa

rsync [選項] ... [ USER@ ]HOST::SRC DEST3d

rsync [選項] ... SRC [ USER@ ]HOST::DEST日誌


10.29 rsync經常使用選項(上)

-a:歸檔模式,表示以遞歸的方式傳輸文件,並保持全部屬性,等同於-rlptgoD。-a選項後面能夠跟一個--no-OPTION,表示關閉-rlptgoD中的某一個,好比-a--no-l等同於-rptgoD。blog

-r:以遞歸的方式處理子目錄。主要是針對目錄來講的,若是單獨傳一個文件不須要加-r選項,可是傳輸目錄時必需要加。遞歸

-v:打印一些信息,好比文件列表、文件數量等。

-l:保留軟連接。

-L:表示像對待常規文件同樣處理軟連接。若是是SRC中有軟連接文件,則加上該選項後,將會把軟連接指向的目標文件複製到DST。

-p:保持文件權限。

-o:保持文件屬主信息。

-g:保持文件屬組信息。

-D:保持設備文件信息。

-t:保持文件時間信息。

--delete:刪除DST中SRC沒有的文件。

--exclude=PATTERN:指定排除不須要傳輸的文件,等號後面跟文件名,能夠是萬用字符模式(如*.txt)。

--progress:在同步的過程當中能夠看到同步的過程狀態,好比統計要同步的文件數量、同步的文件傳輸速度等。

-u:表示把DST中比SRC還新的文件排除掉,不會覆蓋。

-z:加上該選項,將會在傳輸過程當中壓縮。

經常使用的選項有-a、-v、-z、--delete和--exclude這幾個。


10.30 rsync經常使用選項(下)

咱們先創建一些目錄和文件,而後對rsync的各個選項分別作詳細介紹。

使用-a選項:

從上圖可見,咱們原本想把test1目錄直接複製成test2目錄,可結果rsync卻新建了test2目錄,而後把test1放到了test2中。爲了不這樣的狀況發生,咱們能夠這樣作:

這裏加一個/就能夠解決上面的問題,因此在使用rsync備份目錄時,要養成加/的習慣。

咱們知道-a選項等同於-rlptgoD,且-a還能夠和--no-OPTIN一併使用。再來看看-l選項的做用:

如上圖可見,若是不使用-l選項,系統則不會複製軟連接文件。

使用-L選項:

如上圖可見,加-L選項就能夠把源目錄中的軟連接的目錄文件複製到目的目錄中。

使用-u選項:

咱們先查看下test1/1和test2/1的建立時間,而後使用touch修改test2/1的建立時間,讓test2/1比test1/1的建立時間晚一些。

而後不加-u選項進行同步:

此時,test2/1的建立時間仍是和test1/1是同樣的。下面加上-u選項:

如上圖可見,加上-u選項後,不會再把test1/1同步爲test2/1了。

使用--delete選項:

首先刪除test1/123.txt,而後把test1/目錄同步到test2/目錄下:

咱們會發現,test2/目錄並無刪除123.txt文件。

加上--delete選項後:

此時,test2/目錄下的123.txt文件也被刪除了。

還有一種狀況,若是在目錄目錄中增長了文件,而源目錄中沒有這些文件,同步時加上--delete選項後一樣會刪除新增的文件:

使用--exclude選項:

該選項還能夠與匹配字符*一塊兒使用:


10.31 rsync經過ssh同步

rsync [選項] ... SRC [ USER@ ]HOST:DEST

rsync [選項] ... [ USER@ ]HOST: SRC DEST

上面兩種方式就是經過ssh的方式備份數據,經過ssh的方式,其實就是讓用戶登陸到遠程機器,而後執行rsync的任務:

也可使用第三種方式複製:


10.32 rsync經過服務同步(上)

這種方式能夠理解爲:在遠程主機上創建一個rsync的服務器,在服務器上配置好rsync的各類應用,而後將本機做爲rsync的一個客戶端鏈接遠程的rsync服務器。

配置一臺rsync服務器的方法:

在192.168.6.120主機上創建並配置rsync的配置文件/etc/rsyncd.conf,以下圖所示:

參數的做用:

port:指定在哪一個端口啓動rsyncd服務,默認是873端口。

log file:指定日誌文件。

pid file:指定pid文件,這個文件的做用涉及服務的啓動、中止等進程管理操做。

address:指定啓動rsyncd服務的IP。假如你的機器有多個IP,就能夠指定由其中一個啓動rsyncd服務,若是不指定該參數,默認是在所有IP上啓動。

[ ]:指定模塊名,裏面內容自定義。

path:指定數據存放的路徑。

use chroot true|false:表示在傳輸文件前,首先chroot到path參數所指定的目錄下。這樣作的緣由是實現額外的安全防禦,但缺點是須要root權限,而且不能備份指向外部的符號鏈接所指向的目錄文件。默認狀況下chroot的值爲true,若是你的數據當中有軟連接文件,則通常設置爲false。

max connections:指定最大的鏈接數,默認爲0,即沒有限制。

read only ture|false:若是爲true,則不能上傳到該模塊指定的路徑下。

list:表示當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,設定爲true則列出,設定爲false則隱藏。

uid|gid:指定傳輸文件時以哪一個用戶/組的身份傳輸。

auth users:指定傳輸時要使用的用戶名。

secrets file:指定密碼文件,該參數連同上面的參數若是不指定,則不使用密碼驗證。注意,該密碼文件的權限必定要是600。

hosts allow:表示被容許鏈接該模塊的主機,能夠是IP或者網段,若是是多個,中間用空格隔開。

編輯secrets file並保存後要賦予600權限,若是權限不對,則不能完成同步:

 

若是想開機ynfcrsyncd服務,請把/usr/bin/rsync --daemon --confg=/etc/rsyncd.conf寫入/etc/rc.d/rc.local文件中。

 


10.33 rsync經過服務同步(下)

上面的例子中,都是要輸入密碼,這意味着咱們不能寫入腳本中自動執行。其實這種方式能夠不用手動輸入密碼,有兩實現方式。

(1)、指定密碼文件

 

(2)、在rsync服務端不指定用戶

相關文章
相關標籤/搜索