20190401 從 windows server 2008 同步到 CentOS
環境構成:
服務器端:
visualbox 虛擬機
Windows Server2008
192.168.1.178
客戶端 :
visualbox 虛擬機
CentOS 6 ( CentOS 7 也是一樣的)
192.168.1.184
目標:
將 Windows Server2008 傷的文件服務器目錄自動同步到 CentOS 服務器上去
1、下載
https://www.backupassist.com/rsync/
選擇 cwRsyncServer_4.1.0_Installer.zip
2、安裝 cwRsyncServer
-
預先建立一個不同於 Administrator 的賬戶 ,例如: dhbm
** 安裝過程中會自動創建一個賬號,並要求設置密碼,但是,我第一次被 360 擋住之後,後續死活不成功
** 我第一次測試成功就是直接使用了Administrator,並使用Administrator密碼 -
安裝過程基本上是一路回車,除了建立賬號之外,如下圖:
這是安裝程序自動建立的賬號,
我後續使用了以上系統賬號才正確的,如下圖
3. 安裝完成後的信息如下:
** 建議不要使用她自動推薦的缺省目錄,例如:我使用了 c:\rsync20190401
** 如果一次不成功,下次再換個目錄測試,例如:c:\rsync20190401-1
-
如果第一次不成功,卸載的時候,要運行以下 3 個,最好是以下 1,2,3 的次序執行!
- 以管理員身份運行 cygrunserver!
** 必須管理員身份,否則,在本地服務裏面找不到 Rsyncserver
- 以管理員身份運行 cygrunserver!
-
找到並設置 Rsyncserver 自動運行
3、修改配置文件
** 安裝的時候已經自動配置好了,以下 hosts allow 可以在實際運行的時候,指定客戶端 ip
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
# add by wzh 20190401
port = 873 #默認端口873
uid = 0 #不指定uid,不加這一行將無法使用任何賬戶
gid = 0 #不指定gid
max connections = 100 #最大連接數100
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes
# add by wzh 20190401
lock file = rsyncd.lock
** 以上配置了一個 測試模塊 test ,後續可以照着 test 模塊建立其他需要同步的模塊
** 按照以上配置,先在 c:盤建立好一個work目錄,並 copy 幾個文件進去,用於測試
到這裏, windows 服務端就算配置好了!如果中途有修改配置,青重新啓動 Rsyncserver 服務
4、 linux 端安裝 rsync
-
sudo yum -y install rsync
-
su
輸入密碼之後,以 root 運行 -
設置密碼文件
假設剛纔windows 上設置了用戶 dhbm ,密碼:XXXXXXXXXX123
實際請換成自己的密碼sudo echo "XXXXXXXXXX123" > /root/rsync_user.pwd sudo chmod 600 /root/rsync_user.pwd
-
建立一個對應服務器上剛纔的 test 模塊的 work 目錄 (名字不一定也要叫work)
mkdir /home/dhbm/work -
測試 rsync 連接
rsync -avz --progress --delete --password-file=/root/rsync_user.pwd [email protected]::test /home/dhbm/work 返回結果如下: [email protected]::test /home/dhbm receiving incremental file list deleting .ssh/authorized_keys deleting .ssh/ deleting .viminfo deleting .bashrc deleting .bash_profile deleting .bash_logout deleting .bash_history ./ ......
-
錯誤處理 @ERROR: failed to open lock file
rsync error: error starting client-server protocol (code 5) at main.c(1648) [Receiver=3.1.2]參考 https://www.cnblogs.com/djane/articles/4618235.html
加上 lock file = rsyncd.lock -
錯誤處理 @ERROR: Unknown module ‘svndata’
rsync error: error starting client-server protocol (code 5) at main.c(1648) [Receiver=3.1.2]抄寫別人的測試命令時,以上模塊名字沒有修改,記得改成自己在 windows 上設置的模塊名字 test
8.錯誤處理 cwRsyncServer執行後服務界面找不到服務
** 必須以管理員身份運行
** 可以按照前面提到的 uninstall 1,2,3 卸載後,重新來過
** 可以按照前面提到的,在安裝到另一個目錄試試
5、建立一個腳本命令自動同步
-
創建 sh 文件
touch /root/rsync_data.sh
chmod +x /root/rsync_data.sh
vim /root/rsync_data.sh
內容如下:#!/bin/bash USER="dhbm" PASS="/root/rsync_user.pwd" SOURCE="192.168.0.189::test" DEST="/home/dhbm/work" FILE="/root/rsync.log" CMD="/usr/bin/rsync" while true do $CMD -avz --bwlimit=512 --progress --delete --password-file=$PASS $USER@$SOURCE $DEST chown -R dhbm.dhbm /home/dhbm/work TIME="$(date "+%F %H:%M:%S")" if [ $? -eq 0 ];then echo "$TIME ---> rsync success" >> $FILE else echo "$TIME ---> rsync failed" >> $FILE fi sleep 20 done
-
執行 腳本
cd /root
./rsync_data.sh -
再打開一個 Terminal ,看看是否已經同步了 windows 上的 c:/work 的文件
-
在 widnows 端,往 c:/work 拖入幾個新文件,同時觀察 Centos 這邊是否立即同步過來
-
確認服務是否已經運行
ps -ef |grep rsync
root 3846 3833 0 17:46 tty1 00:00:00 /bin/bash ./rsync_data.sh
root 3847 3846 0 17:46 tty1 00:00:01 /usr/bin/rsync -avz --bwlimit=512 --progress --delete --password-file=/root/rsync_user.pwd [email protected]::upload /home/dhbm/upload
root 3848 3847 4 17:46 tty1 00:11:31 /usr/bin/rsync -avz --bwlimit=512 --progress --delete --password-file=/root/rsync_user.pwd [email protected]::upload /home/dhbm/upload
dhbm 4010 3990 0 22:31 pts/0 00:00:00 grep --color=auto rsync
6、Centos 上設置 rsync 服務自動運行
6、查看活動log
su 之後以 root 身份查看
cd /root
cat rsync.log
或者 tail rsync.log
或者
sudo cat /root/rsync.log