一、rsync同步工具算法
1.一、rsync介紹shell
rsync(remote sync)是unix系統下的數據鏡像備份工具,也是一款快速增量備份工具,支持遠程同步、本地複製等功能。並且rsync不但傳輸速度快,並且在傳輸時,能夠實現差別備份,也就是僅若是服務器端和客戶端之間數據不一致時,僅複製不一樣的部分。vim
1.1.一、特色:安全
能夠鏡像保存整個目錄樹或文件系統bash
有較高的文件傳輸效率服務器
能夠藉助於ssh實現安全數據傳輸併發
支持匿名數據傳輸ssh
1.1.二、rsync工做模式socket
本機上直接運行,相似cp工具shell模式(本地模式)ide
使用rsh或ssh上實現服務器端與客戶端之間數據傳輸(遠程shell模式,可利用ssh協議承載其遠程傳輸過程
列表模式,僅列出源中的內容,而不復制(-nv)
服務器模式,此時rsync工做爲守護進程。可以接收客戶端的數據傳輸請求,並且在同步時能夠把客戶端的數據同步給服務器端,也能夠反過來
1.1.三、同步方式
基於某種算法,也叫rsync算法,實現去檢查你的源和目標之間兩個文件是否有不一樣之處,若是有,僅去發送不一樣的文件,相同的就不作複製,因此是快速同步工具
1.1.四、缺點
傳輸過程是不加密的(可是他能借助ssh實現傳輸加密)
1.二、rsync命令經常使用選項
-n:測試同步,可是實際上不作同步
-v:詳細輸出模式
-q:靜默模式,不顯示信息
-c:checksum,開啓校驗功能
-r:遞歸複製
註釋:這裏須要注意個地方,若是你複製的文件最後沒有「/」,那麼他複製的就是目錄名,若是有的話,他複製的裏面的全部文件
-a:歸檔,保留文件的原有屬性
-p:保留文件的權限
-t:保留文件的時間戳
-l:保留符號連接
-g:保留屬組
-o:保留屬主
-D:保留設備文件
-e ssh:使用ssh做爲傳輸承載
-z:壓縮後傳輸
--progress:顯示進度條
--stats:顯示如何執行壓縮和傳輸
用法示例: [root@localhost~]# rsync -r --stats -e ssh --progress /etc/pam.d root@192.168.1.187:/tmp/
1.三、服務器模式
1.3.一、服務
rsync工做於服務器模式時,rsync自身並不監聽,由於他是瞬時守護進程,須要藉助於超級守護進程(xinetd)
1.3.二、配置文件
若是rsync須要工做起來,將本身本地某個目錄存儲塊共享出去,還須要提供額外的配置文件。但此配置文件rsync並是沒有提供。雖然沒有提供直接的配置文件,可是在它安裝目錄下有一個叫rsyncd.conf.5.gz的文件,這個文件就是rsync的幫助手冊。咱們能夠根據裏面的幫助信息,自我編寫相應的配置文件
1.3.三、服務配置文件格式
rsync配置文件分兩段:
註釋:主要定義有哪些共享,每個共享都是相似Samba同樣用[]來定義
全局配置段:一般只有一個
共享配置段:能夠有多個
例如:[SHARE_NAME] #定義共享名 #有點相似Samba
1.3.四、rsync所監聽的端口
rsync所監聽的端口是 873
1.3.五、rsync命令格式
Access via rsync daemon:
#從遠端服務器拉去數據 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] #向遠端服務器推送數據 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
示例:使用客戶端執行下面的命令(向遠端服務器推送數據)
①
[root@localhost ~]# rsync /etc/fstab 192.168.1.187::tools
註釋:這裏是明肯定義推送到哪一個共享名便可
②
[root@localhost ~]# rsync /etc/fstab rsync://192.168.1.187/tools
示例:使用客戶端執行下面的命令(從遠端服務器拉去數據到本地)
註釋:前提是你的tools指定的共享盤是有數據的
①
[root@localhost ~]# rsync -a 192.168.1.187::tools/ ./ [root@localhost tmp]# rsync -a 192.168.1.187::tools/Local.repo ./ #拉取單個文件
②
[root@localhost tmp]# rsync -a rsync://192.168.1.187/tools/fstab ./
1.3.六、實驗:實現rsync安裝及應用
實驗拓撲
步驟
一、想啓動rsync服務,先安裝超級守護進程
[root@rsyncserver ~]# yum install xinetd #安裝超級守護進程
二、設置開機自動啓動
[root@rsyncserver xinetd.d]# chkconfig xinetd on
三、安裝rsync
[root@rsyncServer xinetd.d]# yum install rsync -y
四、查看超級守護進程下自動生成的rsync服務
[root@rsyncserver xinetd.d]# vim /etc/xinetd.d/rsync service rsync { disable = no # 這裏改成no,就表示啓用起來了 flags = IPv6 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID
五、建立共享目錄
[root@rsyncServer xinetd.d]# mkdir /data
六、編輯配置文件/etc/rsyncd.conf(此文件是本身新建,系統不會自動生成)
[root@rsyncServer xinetd.d]# vim /etc/rsyncd.conf
# Global Settings uid = nobody gid = nobody use chroot = no #要不要啓用chroot功能 max connections = 10 #最大併發鏈接數 strict modes = yes #是否啓用嚴格檢查權限,用戶是否容許上傳下載 pid file = /var/run/rsync.pid log file = /var/log/rsyncd.log # Directory to be synced [tools] path = /data#共享文件所存放的地方 ignore error = yes #傳輸中若是有文件發生錯誤了怎麼辦,yes表示忽略 read only = no #是不是隻讀 write only = no #是否是隻寫,讓別人不能看 hosts allow = 192.168.1.0/24 #容許哪些主機來實現數據同步(白名單) hosts deny = * #若是他匹配到上面的,那麼就直接經過,若是沒有,表示拒絕全部 list = false #是否容許列出全部 true/false uid = root gid = root #這裏的uid和gid和上面的不一樣,這裏的意思是這個共享目錄是以什麼身份運行的。若是此處比寫,將會繼承上面的
七、啓動服務
[root@rsyncserver xinetd.d]# service xinetd star
八、使用Linux客戶端測試鏈接
[root@localhost ~]# rsync /etc/fstab 192.168.1.187::tools
註釋:若是鏈接不成功,請查看是否開啓了防火牆
1.3.七、實驗:服務器端啓用用戶認證的功能
咱們知道使用IP地址訪問受權既不方便也不安全,因此解決辦法就是給用戶受權。
介紹
一、首先要添加認證參數,就是在共享定義處添加配置 [tools]添加兩項參數
auth users = USERNAME LIST #容許哪一個用戶,要寫具體的名字,此用戶必須是你的 password存在的用戶
Secrets file = /etc/rsynce.passwd #密碼文件路徑,須要本身建立
說明:USERNAME LIST以逗號分隔的再rsyncd.passwd中存在用戶名的列表
二、建立密碼文件/etc/rsyncd.passwd #這個密碼文件有特殊的權限要求,必須是600
格式:
username:password
註釋:內容是明文的,因此要作好文件權限控制
示例:
一、編輯rsyncd.conf配置文件,添加用戶認證參數
[root@rsyncserver data]# vim /etc/rsyncd.conf auth users = tom, jerry secrets file = /etc/rsyncd.passwd
二、建立rsync密碼文件及建立用戶帳號密碼
[root@rsyncserver data]# vim /etc/rsyncd.passwd wqp:pangxie windchaser:pangxie
三、修改權限
[root@rsyncserver data]# chmod 600 /etc/rsyncd.passwd
四、重啓xinetd服務
[root@rsyncserver data]# service xinetd restart
五、使用客戶端測試
[root@localhost ~]# rsync /etc/fstab wqp@192.168.1.187::tools