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
- 找到并设置 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 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
./
......
- 错误处理 @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 - 错误处理 @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 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 服务自动运行