Rsync(remote sync)是UNIX及類UNIX平臺下一款神奇的數據鏡像備份軟件,它不像FTP或其餘文件傳輸服務那樣須要進行全備份,Rsync能夠根據數據的變化進行差別備份,從而減小數據流量,提升工做效率。你可使用它進行本地數據或遠程數據的複製,Rsync可使用SSH安全隧道進行加密數據傳輸。Rsync服務器端定義源數據,Rsync客戶端僅在源數據發生改變後纔會從服務器上實際複製數據至本地,若是源數據在服務器端被刪除,則客戶端數據也會被刪除,以確保主機之間的數據是同步的。Rsync使用TCP 873端口。vim
使用CentOS 7系統安裝部署Rsync很是方便,安裝光盤以及YUM源中都提供了rsync軟件包,使用YUM方式安裝便可。下面的案例演示瞭如何共享/common目錄,爲此,咱們須要建立/common目錄,並複製一些測試文件存放在該目錄下。本例須要手動建立配置文件/etc/rsync.conf,該文件具體的語法格式在後面有詳細的描述。centos
[root@centos7 ~]# yum -y install rsync安全
[root@centos7 ~]# mkdir /common; cp /etc/init.d/* /common/bash
[root@centos7 ~]# vim /etc/rsync.conf服務器
#/etc/rsyncd.conf #設置服務器信息提示文件名稱,在該文件中編寫提示信息 motd file = /etc/rsyncd.motd #開啓Rsync數據傳輸日誌功能 transfer logging = yes #設置日誌文件名稱,能夠經過log format參數設置日誌格式 log file =/var/log/rsyncd.log #設置Rsync進程號保存文件名稱 pid file =/var/run/rsyncd.pid #設置鎖文件名稱 lock file =/var/run/rsync.lock #設置服務器監聽的端口號,默認爲873 port = 873 #設置服務器所監聽網卡接口的IP地址,這裏服務器IP地址爲192.168.0.254 address = 192.168.0.254 #設置進行數據傳輸時所使用的帳戶名稱或ID號,默認使用nobody uid = nobody #設置進行數據傳輸時所使用的組名稱或GID號,默認使用nobody gid = nobody #設置user chroot爲yes後,rsync會首先進行chroot設置,將根映射到path參數路徑下,對客戶 #端而言,系統的根就是path參數所指定的路徑。但這樣作須要root權限,而且在同步符號 #鏈接資料時僅會同步名稱,而內容將不會同步。 use chroot = no #是否容許客戶端上傳數據,這裏設置爲只讀。 read only = yes #設置併發鏈接數,0表明無限制。超出併發數後,若是依然有客戶端鏈接請求,則將會收 #到稍後重試的提示消息 max connections = 10 #模塊,Rsync經過模塊定義同步的目錄,模塊以[name]的形式定義,這與Samba定義共 #享目錄是同樣的效果。在Rsync中也能夠定義多個模塊 [common] #comment定義註釋說明字串 comment = Web content #同步目錄的真實路徑經過path指定 path = /common #忽略一些IO錯誤 ignore errors #exclude能夠指定例外的目錄,即將common目錄下的某個目錄設置爲不一樣步數據 #exclude = test/ #設置容許鏈接服務器的帳戶,帳戶能夠是系統中不存在的用戶 auth users = tom,jerry #設置密碼驗證文件名稱,注意該文件的權限要求爲只讀,建議權限爲600,僅在設置auth users #參數後有效 secrets file = /etc/rsyncd.secrets #設置容許哪些主機能夠同步數據,能夠是單個IP,也能夠是網段,多個IP與網段之間使用空 #格分隔 hosts allow=192.168.0.0/255.255.255.0 #設置拒絕全部(除hosts allow定義的主機外) hosts deny=* #客戶端請求顯示模塊列表時,本模塊名稱是否顯示,默認爲true list= false
接下來,經過echo的方式建立密碼文件/etc/rsyncd.secrets,在該文件中輸入兩個帳戶:tom帳戶的密碼是pass,jerry帳戶的密碼是111。須要注意的是,密碼文件不能夠對全部的人開放可讀權限,爲了安全,建議設置權限爲600。建立服務器提示信息文件並向該文件中導入歡迎詞。因爲Rsync默認不是開機啓動服務,爲了實現開機啓動Rsync服務,咱們能夠經過echo將rsync --daemon追加至開機啓動文件/etc/rc.local。最後經過設置防火牆開啓873端口的入站數據請求。併發
[root@centos7 ~]# echo "tom:pass" > /etc/rsyncd.secretstcp
[root@centos7 ~]# echo "jerry:111" >> /etc/rsyncd.secretside
[root@centos7 ~]# chmod 600 /etc/rsyncd.secrets測試
[root@centos7 ~]# echo 「welcome to access」 >/etc/rsyncd.motdui
[root@centos7 ~]# rsync --daemon
[root@centos7 ~]# echo 「/usr/bin/rsync --daemon」 >> /etc/rc.local
[root@centos7 ~]# firewall-cmd --permanent --add-port=873/tcp
#添加防火牆規則,容許873端口的數據訪問
客戶端同步數據
如今讓咱們開始同步數據吧,在客戶端主機中一樣是使用rsync命令進行初始化數據傳輸,使用一樣的程序,但客戶端主機不須要--daemon選項。
[root@centos7 ~]# yum -y install rsync
[root@centos7 ~]# rsync-vzrtopg --progress tom@192.168.0.254::common /test