天天看點

rsync同步資料

隻有有了新的需求,才可以激發相應的動力去做事情!

最新有個新的需求-- 需要在Linux同步檔案夾 

我繪制了其邏輯圖,如下:

rsync同步資料

因為源資料庫伺服器裡面的内容是定時變化的,而我不可能每時每刻都将資料同步到各個伺服器,而隻能定時的将資料同步到目标伺服器裡面。

下面說下配置rsync的步驟:

下面這個是我根據參考文章修改後的,并且添加了一些我自己的經驗總結。

說明:

作業系統:CentOS-6.7-x86_64-minimal.iso

源伺服器:192.168.11.130, 該機安裝時設定的使用者名為 oldmtn2

目标伺服器:192.168.11.128,

該機安裝時設定的使用者名為 oldmtn

目的:把源伺服器上/root/ceshi/目錄實下所有檔案同步到目标伺服器的/root/folder1/下

具體操作:

第一部分:在目标伺服器192.168.11.128上操作

一、分别在兩台在目标伺服器安裝Rsync服務端

1、關閉SELINUX

知識科普:SElinux是Linux安全加強工具。關閉用setenforce 0或者修改檔案vim /etc/sysconfig/selinux 把SELINUX=enforcing 改為 SELINUX=disabled.linux防火牆用chkconfig

iptables on 開機啟動 service iptables start 打開防火牆規則。

vi /etc/selinux/config #編輯防火牆配置檔案

#SELINUX=enforcing #注釋掉

#SELINUXTYPE=targeted #注釋掉

SELINUX=disabled #增加

:wq! #儲存,退出

setenforce 0  #立即生效,

其實就是關閉Linux的安全加強工具。

2、開啟防火牆tcp 873端口(Rsync預設端口)

如果不打開873端口的話,源伺服器同步檔案時将會出現"rsync: failed to connect to : No route to host"的錯誤。

vi /etc/sysconfig/iptables #編輯防火牆配置檔案

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT #打開873端口,這條規則要加在REJECT規則前

/etc/init.d/iptables restart #最後重新開機防火牆使配置生效

這一步現在還有問題,因為提示我上面紅色部分的代碼有問題,是以我先把不開啟防火牆吧。。

3、安裝Rsync服務端軟體

yum install rsync xinetd #安裝

vi /etc/xinetd.d/rsync #編輯配置檔案,設定開機啟動rsync

disable = no #修改為no

:wq! #儲存退出

/etc/init.d/xinetd start #啟動(CentOS中是以xinetd來管理Rsync服務的)

4、建立rsyncd.conf配置檔案

vi /etc/rsyncd.conf #建立配置檔案,添加以下代碼

log file = /var/log/rsyncd.log #日志檔案位置,啟動rsync後自動産生這個檔案,無需提前建立

pidfile = /var/run/rsyncd.pid  #pid檔案的存放位置

lock file = /var/run/rsync.lock  #支援max

connections參數的鎖檔案

secrets file = /etc/rsync.pass  #使用者認證配置檔案,裡面儲存使用者名稱和密碼,後面會建立這個檔案

motd file = /etc/rsyncd.Motd  #rsync啟動時歡迎資訊頁面檔案位置(檔案内容自定義)

[test1] #自定義名稱,

後面源伺服器發送檔案的時候需要知道這個test1

path = /root/folder1/ #rsync服務端資料目錄路徑,從test1接受的檔案都存放到這個夾子裡面

comment = test1 #子產品名稱與[test1]自定義名稱相同

uid = root #設定rsync運作權限為root

gid = root #設定rsync運作權限為root

port=873  #預設端口

use chroot = no #預設為true,修改為no,增加對目錄檔案軟連接配接的備份

read only = no  #設定rsync服務端檔案為讀寫權限

list = no #不顯示rsync服務端資源清單

max connections = 200 #最大連接配接數

timeout = 600  #設定逾時時間

auth users = root #執行資料同步的使用者名,可以設定多個,用英文狀态下逗号隔開

hosts allow = 192.168.11.130  #允許進行資料同步的用戶端IP位址,可以設定多個,用英文狀态下逗号隔開

hosts deny = 192.168.21.254 #禁止資料同步的用戶端IP位址,可以設定多個,用英文狀态下逗号隔開

:wq!  #儲存,退出

5、建立使用者認證檔案

vi /etc/rsync.pass #配置檔案,添加以下内容

root:123456  #格式,使用者名:密碼,可以設定多個,每行一個使用者名:密碼,在這裡設定後,

:wq!  #儲存,退出

6、設定檔案權限

chmod 600 /etc/rsyncd.conf  #設定檔案所有者讀取、寫入權限

chmod 600 /etc/rsync.pass  #設定檔案所有者讀取、寫入權限

7、啟動rsync

/etc/init.d/xinetd start  #啟動

service xinetd stop   #停止

service xinetd restart #重新啟動

第二部分:在源伺服器192.168.11.130上操作

一、安裝Rsync用戶端

setenforce 0 #立即生效

2、開啟防火牆tcp 873端口(Rsync預設端口,做為用戶端的Rsync可以不用開啟873端口)

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT  #打開873端口,這條規則要加在REJECT規則前

3、安裝Rsync用戶端軟體

whereis rsync   #檢視系統是否已安裝rsync,出現下面的提示,說明已經安裝

rsync: /usr/bin/rsync /usr/share/man/man1/rsync.1.gz

yum install  xinetd  #隻安裝xinetd即可,CentOS中是以xinetd來管理rsync服務的

yum install rsync xinetd #如果預設沒有rsync,運作此指令進行安裝rsync和xinetd

disable = no #修改為

/etc/init.d/xinetd start #啟動(CentOS中是以xinetd來管理rsync服務的)

4、建立認證密碼檔案

vi /etc/passwd.txt  #編輯檔案,添加以下内容

123456 #密碼

chmod 600 /etc/passwd.txt #設定檔案權限,隻設定檔案所有者具有讀取、寫入權限即可

5、測試源伺服器192.168.11.130到兩台目标伺服器192.168.11.128之間的資料同步

mkdir /root/ceshi #在源伺服器上建立測試檔案夾,然後在源伺服器運作下面2行指令

rsync -avH --port=873 --progress --delete  /root/ceshi/  [email protected]::test1

--password-file=/etc/passwd.txt

運作完成後,分别在兩台目标伺服器192.168.11.128上檢視,在/root/folder/目錄下有了192.168.11.130的/root/ceshi/檔案夾下的所有内容,說明資料同步成功。

繼續閱讀