1. 程式人生 > >入門一班 20181031 rsync

入門一班 20181031 rsync

10月31日任務

10.28 rsync工具介紹
10.29/10.30 rsync常用選項
10.31 rsync通過ssh同步


Linux檔案同步工具 rsync


image.png

非常實用和重要的一個工具。在日常的運維工作中每天都要用到。傳輸檔案從A到B,備份到遠端的資料等都會使用到這個工具。 不僅僅可以從一臺到另一臺也可以從本機到本機從一個目錄到另一個目錄,類似cp但是又不一樣。

比如,A目錄下資料拷貝到B目錄去,而且A目錄的資料一直在更新,要求每小時拷貝一次。

但是如果是使用cp命令的話,就會覆蓋了。但是覆蓋後就完全不知道增加的檔案是什麼了,每次增加的時候無法體現。同時會浪費IO,讀寫同時進行。

這個時候就不需要使用cp了,使用rsync,它可實現增量的拷貝,同步的時候僅同步變更的檔案。

也支援遠端。兩個不同的ip機器,也可以使用rsync遠端的同步。


本地路徑的拷貝

rsync -av  原始目錄  目標目錄

-v 視覺化,即可看到拷貝的過程。注意,使用這個命令和選項的時候,目標目錄必須都存在,否則的話不行。不會自動生成路徑目錄。

image.png


遠端路徑的拷貝,目標機器的使用者以及ip地址都需要完整

rsync  -av /目錄  使用者名稱@ip:/目錄

rsync -av /etc/passwd [email protected]:/tmp/1.txt 注意第一次傳送的時候目標機器沒有安裝rsync包,所以沒法接收。

image.png

image.png

以下就是rsync的語法 src源目錄/檔案 dest目標目錄

rsync [option] ...src dest 

rsync [option] ...src [[email protected]]host:dest


rsync [option] ...[[email protected]]host:src dest 將遠端的目錄或檔案拷貝到本地的目錄下,前面是遠端的,後面是本地的

image.png

rsync [option] ...src [[email protected]]host::dest 兩個冒號和一個冒號是不一樣的 

rsync [option] ...[[email protected]

]host::src dest


rsync的常用選項

image.png

-a 包含了-rtplgoD就是說-a all 就包括了後面的那些選項 -r -t -p -l -g -o -D 只要寫一個-a 就可以了

-r 同步目錄時候要加上,類似cp的時候-r選項

-v 視覺化,告訴你同步的過程資訊

-l 保留軟連結

-L 加上該選項後,同步軟連結時候會把原始檔給同步,不僅僅是軟連結這個檔案,同時真正的軟連結指向的檔案也過去了。這樣的話就不會出現只來軟的不來硬的了。

-p 保持檔案的許可權屬性 755 644到目標機器後的許可權依然不變

-o 保持檔案的屬主 如果目標那邊沒有這個屬主,就會顯示puid 

-g 保持檔案的屬組 這邊是root 那邊也是root

-D 保持裝置檔案資訊 

-t 保持檔案的時間屬性 各種修改時間 建立時間等等還是保持一樣

--delete 刪除目標目錄中源目錄沒有的檔案 比如A目錄到B目錄後,如果想保持一摸一樣的狀態,B中有A沒有的檔案,就會將這個刪掉。這個很有用,如果想保持一摸一樣就加這個選項。

--exclude 過濾指定檔案,如--exclude “logs”會把檔案包含logs的檔案或目錄過濾掉,不同步,支援通配

-P 顯示同步過程,比如速率。比-v更詳細

-u  update的意思。加上該選項後,如果目標目錄中的檔案比原始檔新就不同步。A有123三個檔案 B有124三個檔案  但是B中12比A中的新,修改時間更新。所以如果A中的檔案雖然拷貝過去了,但是實際更老,所以加上-u就不覆蓋了。

-z zip的意思 傳輸時壓縮,這樣更快。傳之前壓縮,傳到後解壓,節省頻寬。


10.30 rsync常用選項(下)

同步目錄的時候需要在目錄的後面加上一個斜槓,目標目錄也要加,同時要有新的目錄的名字

-av的作用是 a基本上全部包括那些資訊了。

image.png

可以從下面看到,修改時間,其他的所有的屬性都是按照原來的來的。

image.png


-L的作用是將軟連結指向的原始檔拷貝過去,然後拷貝之後的軟連結檔案變成了一個檔案,而它這個檔案的內容就是之前軟連結指向的檔案,但是此時它已經不是軟連結了,而是一個包含值的檔案。


--delete 目的是兩個目錄完全一致,如映象一般。

image.png


--exclude 去掉不想要的檔案/檔案型別,不支援連寫, 但是支援一個一個寫,--exclude "*.txt" --exclude "aming*" 過濾掉txt檔案以及aming開頭的檔案

image.png

image.png


-P 對於傳輸很大的檔案的時候,監控檔案傳輸過程非常有幫助。

image.png


如果有特殊需求希望目標目錄下的某個檔案不被覆蓋,因為它有某種原因在目標目錄下保持比源目錄檔案新。這個時候就加上u選項,可以保護目標目錄下更新的檔案不被源目錄替換。

image.png


rsync通過ssh同步

image.png


rsync通過ssh方式同步

rsync -av test1/ 192.168.133.132:/tmp/test2/

既可以將本機傳到其他機器,也可以其他機器傳到本機。(推檔案和拉檔案)

image.png


假如對方埠不是22,就需要加一個選項指定埠  -e "ssh -p 22"

rsync -av -e "ssh -p 22" test1/192.168.166.132:/tmp/test2