CentOS 7 rsyncnode
1)軟件簡介linux
Rsync 是一個遠程數據同步工具,可經過 LAN/WAN 快速同步多臺主機間的文件。Rsync 原本是用以取代rcp 的一個工具,它當前由 Rsync.samba.org 維護。Rsync 使用所謂的「Rsync 演算法」來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不一樣部分,而不是每次都整份傳送,所以速度至關快。運行 Rsync server 的機器也叫 backup server,一個 Rsync server 可同時備份多個 client 的數據;也能夠多個Rsync server 備份一個 client 的數據。算法
Rsync 能夠搭配 rsh 或 ssh 甚至使用 daemon 模式。Rsync server 會打開一個873的服務通道(port),等待對方 Rsync 鏈接。鏈接時,Rsync server 會檢查口令是否相符,若經過口令查覈,則能夠開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,下一次就只傳送二個文件之間不一樣的部份。windows
Rsync 支持大多數的類 Unix 系統,不管是 Linux、Solaris 仍是 BSD 上都通過了良好的測試。此外,它在windows 平臺下也有相應的版本,比較知名的有 cwRsync 和 Sync2NAS。網絡
Rsync 的基本特色以下:ssh
能夠鏡像保存整個目錄樹和文件系統;
能夠很容易作到保持原來文件的權限、時間、軟硬連接等;
無須特殊權限便可安裝;
優化的流程,文件傳輸效率高;
可使用 rcp、ssh 等方式來傳輸文件,固然也能夠經過直接的 socket 鏈接;
支持匿名傳輸。socket
2)核心算法tcp
假定在名爲 α 和 β 的兩臺計算機之間同步類似的文件 A 與 B,其中 α 對文件A擁有訪問權,β 對文件 B 擁有訪問權。而且假定主機 α 與 β 之間的網絡帶寬很小。那麼 Rsync 算法將經過下面的五個步驟來完成:工具
β 將文件 B 分割成一組不重疊的固定大小爲 S 字節的數據塊。最後一塊可能會比 S 小。
β 對每個分割好的數據塊執行兩種校驗:一種是32位的滾動弱校驗,另外一種是128位的 MD4 強校驗。
β 將這些校驗結果發給 α。
α 經過搜索文件 A 的全部大小爲 S 的數據塊(偏移量能夠任選,不必定非要是 S 的倍數),來尋找與文件B 的某一塊有着相同的弱校驗碼和強校驗碼的數據塊。這項工做能夠藉助滾動校驗的特性很快完成。
α 發給 β 一串指令來生成文件 A 在 β 上的備份。這裏的每一條指令要麼是對文件 B 經擁有某一個數據塊而不須重傳的證實,要麼是一個數據塊,這個數據塊確定是沒有與文件 B 的任何一個數據塊匹配上的。oop
3)配置管理
1 關閉selinux
臨時關閉 setenforce 0
永久關閉 $vi /etc/sysconfig/selinux
SELINUX=disabled
2 安裝rsync 系統自帶
開機啓動 systemctl enable rsyncd
3 配置服務端
$ vi /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid = root gid = root use chroot = no max connections = 2 strict modes = yes port = 873 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [hadoop] path = /opt/hadoop/etc/hadoop/ # 數據存放位置 comment = HADOOP read only = yes list = no auth users = hadoop #與系統用戶無關 secrets file = /etc/rsyncd.secret #hosts allow = 192.168.6.1 #設置容許訪問的客戶端多個客戶端用空格隔開 #hosts deny = * #設置不容許訪問的黑名單 [zookeeper] #這裏至關於一個區分符,若是要同步多個文件夾就在這裏區分 path = /opt/zookeeper/conf #數據存放位置 comment = ZOOKEEPER auth users = hadoop secrets file = /etc/rsyncd.secrets #存放rsync密碼的文件 read only = no list = no
配置rsync密碼(在上邊的配置文件中已經寫好路徑)/etc/rsyncd.secrets(名字隨便寫,只要和上邊配置文件裏的一致便可),格式(一行一個用戶)
$ vi /etc/rsyncd.secrets
hadoop:hadoop # 用戶:密碼
hadoop1:hadoop1
配置rsync密碼文件權限
chown root.root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
4 啓動 驗證
$ systemctl start rsyncd
$ netstat -apn | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2688/rsync
tcp6 0 0 :::873 :::* LISTEN 2688/rsync
5 客戶端配置
1 配置三個過程就能夠了
1.1 設定密碼文件
1.2 測試rsync執行指令
1.3 將rsync指令放入週期任務(crontab)
設定密碼文件
$ vi /etc/rsyncd.secrets
hadoop #這裏只須要寫密碼
$ chown root:root /etc/rsyncd.secrets # 注意必須給權限
$ chmod 600 /etc/rsyncd.secrets # 必須修改權限
測試rsync執行指令
上傳 rsync -avz --password-file=/etc/rsyncd.secrets /opt/hadoop/etc/hadoo hadoop@namenode::hadoop
下載 rsync -avz --progress --delete --password-file=/etc/rsyncd.secrets hadoop@namenode::hadoop /opt/hadoop/etc/hadoop
rsync的參數的說明:
-a 至關於 -rlptgoD 的集合
-u 等同於 –update,在目標文件比源文件新的狀況下不更新
-v 顯示同步的文件
–progress 顯示文件同步時的百分比進度、傳輸速率
--delete 若是源目標系統中不存在 , 同步系統中的文件將被刪除
將rsync指令放入週期任務(crontab)