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