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

windows server和centos数据传输 windows server centos_运维

2、安装 cwRsyncServer

  1. 预先建立一个不同于 Administrator 的账户 ,例如: dhbm ** 安装过程中会自动创建一个账号,并要求设置密码,但是,我第一次被 360 挡住之后,后续死活不成功 ** 我第一次测试成功就是直接使用了Administrator,并使用Administrator密码
  2. 安装过程基本上是一路回车,除了建立账号之外,如下图: 这是安装程序自动建立的账号,
  3. windows server和centos数据传输 windows server centos_CentOS_02

  4. 我后续使用了以上系统账号才正确的,如下图

windows server和centos数据传输 windows server centos_操作系统_03

3. 安装完成后的信息如下: ** 建议不要使用她自动推荐的缺省目录,例如:我使用了 c:\rsync20190401 ** 如果一次不成功,下次再换个目录测试,例如:c:\rsync20190401-1

windows server和centos数据传输 windows server centos_CentOS_04

  1. 如果第一次不成功,卸载的时候,要运行以下 3 个,最好是以下 1,2,3 的次序执行!
  1. 以管理员身份运行 cygrunserver! ** 必须管理员身份,否则,在本地服务里面找不到 Rsyncserver
  1. 找到并设置 Rsyncserver 自动运行

3、修改配置文件

windows server和centos数据传输 windows server centos_CentOS_05

** 安装的时候已经自动配置好了,以下 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

  1. sudo yum -y install rsync
  2. su 输入密码之后,以 root 运行
  3. 设置密码文件 假设刚才windows 上设置了用户 dhbm ,密码:XXXXXXXXXX123 实际请换成自己的密码
sudo echo "XXXXXXXXXX123" > /root/rsync_user.pwd
 sudo chmod 600 /root/rsync_user.pwd
  1. 建立一个对应服务器上刚才的 test 模块的 work 目录 (名字不一定也要叫work) mkdir /home/dhbm/work
  2. 测试 rsync 连接
rsync -avz --progress --delete --password-file=/root/rsync_user.pwd dhbm@192.168.1.178::test /home/dhbm/work	
 返回结果如下:
 	dhbm@192.168.1.178::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
 	./
 	......
  1. 错误处理 @ERROR: failed to open lock file rsync error: error starting client-server protocol (code 5) at main.c(1648) [Receiver=3.1.2]
    参考 加上 lock file = rsyncd.lock
  2. 错误处理 @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、建立一个脚本命令自动同步

  1. 创建 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
  1. 执行 脚本 cd /root ./rsync_data.sh
  2. 再打开一个 Terminal ,看看是否已经同步了 windows 上的 c:/work 的文件
  3. 在 widnows 端,往 c:/work 拖入几个新文件,同时观察 Centos 这边是否立即同步过来
  4. 确认服务是否已经运行 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 dhbm@192.168.0.166::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 dhbm@192.168.0.166::upload /home/dhbm/upload dhbm 4010 3990 0 22:31 pts/0 00:00:00 grep --color=auto rsync

6、Centos 上设置 rsync 服务自动运行