由於公司有兩臺windows服務器,開發在操作時一般也都是在這兩臺服務器上上傳一些數據或修改一些東西,而Linux上的服務器也要跟windows上的數據要保持一致而又不需要人爲的實現這個過程,基於此過程,昨天花了點時間,完成了基本的測試實現過程,今天就把這過程給記錄下來,方便以後查看,以希望可以幫到還在困惑的朋友們。
第一步:在windows上的安裝cwRsyncServer4.1.0以及配置過程:
在windows上下載安裝包cwRsyncServer4.rar,這個不多解析,大家都懂,要是在虛擬機上安裝windowd服務器的,如果你的windows服務器上不了網,那就在本機上下載好持拷貝過去就好了,如果還不知道怎麼拷貝到windows上去的話那就在linux上建個ftp服務器,把文件丟裏面去共享就可以拷貝了。
在拷貝中如果出現這個問題:windows 2003當前的安全設置不允許從該位置下載文件的解決方案:
只需要設置Internet選項-->安全-->自定義級別 找到下載項中的“文件下載”,啓用即可。
如下是cwRsyncServer安裝過程,一直點下一步就可以了,這裏就不一一貼出來了:
這裏需要創建一個帳戶,就用默認的就好了,設置一個自己的密碼就OK了。
安裝完成之後下面開始配置,打開安裝目錄下的文件目錄:C:\Program Files (x86)\ICW,修改rsyncd.conf配置文件的內容爲以下配置;
這裏要注意的是,如果不寫uid=0,和gid=0的話就,在遠程連接時就會出現以下的情況:
到這裏了就要在F盤下新建一個rsyncdata的目錄,這個目錄就是指它裏面的所有數據同步到linux的指定目錄去的,也就是windows下的rsyncd.conf配置文件的[rsyncdata]模塊對應的文件,新建好之後我們還需要改一些配置:
[rsyncdata] #指定模塊的頭信息 path = /cygdrive/f/rsyncdata #需要同步數據的目錄,這個目錄指F盤下的rsyncdata目錄 read only = true #是否爲只讀 list = no hosts allow = 10.17.1.200,10.17.1.88,10.17.1.60 #允許訪問的主機,多個用逗號分隔 auth users = rsync #指定認證的用戶名 secrets file = /cygdrive/f/rsyncd.secrets #指定認證用戶的密碼文件存放路徑,這個路徑指F盤下的rsyncd.secrets,一會需要新建這個文件
還需要修改一下rsyncdata這個目錄的一些相關屬性信息,右鍵這個文件選屬性:
輸入完SvcCWRSYNC這個用戶名後點“檢查名稱”就可以匹配上了,再點確定就OK了。
最後再改一下這個文件對這個用戶的訪問權限:
選中我的電腦--右鍵管理---服務和應用--服務,找到RsyncSever,雙擊--啓動,把這個服務器起動起來:
到這裏應該是說windows下的就配置完了,但是要注意的是如果你的linux需要用telnet來連接到windows上來的話那windows上的防火牆記得要關閉,否則很可能連不上去,也可以在本上的測試一下,出現以下情況就說明可以連接上去了,說明windows服務可用了。
在cmd下輸入你windows的本機地址和rsync的監聽端口,它的默認監聽的端口是873,回車:
出現@RSYNCD:30.0這個就說明可以連接上去了。
二、Rsync客戶端配置,這個就需要linux上做配置了,相關的配置見如下過程:
1、查看selinux機制,關閉selinux
[root@node1 ~]# getenforce
Disabled
2、安裝Rsync客戶端軟件
[root@node1 ~]# yum install rsync xinetd
3、需要安裝這兩個軟件包就可以了,安裝好之後就要修改一點配置文件了:
[root@node1 ~]# vi /etc/xinetd.d/rsync #編輯配置文件,設置開機啓動rsync ,Centos上的rsync使用xinetd啓用的
將disable=yes,改爲no
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
/etc/init.d/xinetd start #啓動xinetd這個服務
4、修改之後就遠程連接測試一下,記得把windows的防火牆給關閉了哦,要不然很可能會連接不上的,或都在windows防火牆上開放873這個端口
OK,說明連接到windows上成功了,那接下來我們就創建一個與windows下同步的目錄了:
[root@node1 ~]# mkdir pv /rsyncdata/data
爲了同步數據時不用每次都不手動輸入密碼,我們在客戶端(linux下)也創建一個和服務端(windows)一樣的密碼文件(此文件路徑和密碼要與服務器端的一樣,客戶端不用寫名字)
[root@node1 ~]# vim /etc/rsyncd.secrets #只需要寫上服務器端上的用戶密碼就可以了
[root@node1 ~]# chmod 600 /etc/rsyncd.secrets #改一下權限
5、到這裏我們就可以寫命令來拉取windows服務器端上的數據了:
[root@node1 ~]# rsync -vazrtopqg --delete --password-file=/etc/rsyncd.secrets [email protected]::rsyncdata/* /rsyncdata/data/
傳輸成功,這裏說明一下這幾個參數表示什麼:
-v, --verbose #詳細模式輸出
-q, --quiet #精簡輸出模式
-a, --archive #歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
-r, --recursive #對子目錄以遞歸模式處理
-o, --owner #保持文件屬主信息
-g, --group #保持文件屬組信息
-t, --times #保持文件時間信息
--delete #刪除那些DST中SRC沒有的文件
--password-file=FILE #從FILE中得到密碼
6、爲了一是每次有數據修改時都要手動去同步一步,我們把這個命令寫成一個腳本,再添加一個任務計劃,這個就可以實現自動同步數據了;
[root@node1 ~]# crontab -e
* * * * * /bin/bash /root/rsync.sh &> /dev/null #我們設置每分鐘同步一次
OK了,到這裏我們的整個的配置算是完成了,可能還做得不到的地方,希望朋友們發現了給我指出哦,在此先謝過了。