8.5. linux推送到window
- Date:
8.5.1. 环境介绍
- 2台机器:
centos7(192.168.1.109),windows10(192.168.1.104)
centos(/app/web)===>window(c:appweb)
要完成的功能是centos7的数据更新后,自动推送到window机器上面。
这里选择 windows 作为服务端,centos7作为客户端,然后centos7去监控本地数据推送给window数据。
8.5.2. 服务端的配置
8.5.2.1. 下载cygwin
windows下是没有rync的, 需要安装软件来提供rsync功能的。
我们下载 cygwin64.exe , 详细的地址可以访问 cywin官网
安装步骤截图:
安装完毕cygwin之后,其实就是一个linux环境, 剩下的工作和linux和linux同步基本没有太大区别了。
8.5.2.2. 编辑rsyncd的配置文件
rsyncd的配置文件在“C:cygwin64etcrsyncd.conf”(需要自己创建conf文件)
使用记事本编辑这个conf文件
uid = test
gid = None
user chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
[web]
path = /cygdriver/c/app/web/
ignore errors
read only = no
list = no
hosts allow = 192.168.1.0/24
auth users = web
secrets file = /etc/rsyncd.pass
备注
我的uid是test,你的根据你的情况进行修改,如果不知道可以打开cygwin64Terminal终端,输入 echo $USER查看。
8.5.2.3. 创建服务器密码文件
上面指定了密码文件位置为/etc/rsync.pass,我们需要创建这个文件。
web:web
使用cygwin64Terminal修改这个密码文件的权限为600。
8.5.2.4. 启动rsync服务
1# 使用cygwin64Terminal 去启动rsync的服务进程
2rsync --daemon
3psaux aux |grep rsync
8.5.2.5. 创建一个同步目录
这个目录用于后面客户端给推送
1[root@centos74 ~]$ mkdir /app/web
8.5.2.6. 修改目录权限。
window的权限和我们安装的cygwin有点不同的,需要在window上给我们的用户权限,我的是test用户。
8.5.2.7. 客户端配置
8.5.2.8. 安装rsync软件
查看是否安装
1[root@localhost web ]$ rpm -ql rsync
2[root@localhost web]$ yum -y install rsync
8.5.2.9. 先验证下服务端是否可以访问
1[root@localhost web]# telnet 192.168.1.104 873
2Trying 192.168.1.104...
3Connected to 192.168.1.104.
4Escape character is '^]'.
5@RSYNCD: 31.0
出现了RSYNC的字样说明服务端的rsync服务是开启的了。
8.5.2.10. 创建同步密码文件
由于我们的服务端有密码配置,客户端需要密码才能同步我们服务端的数据,且ip在服务端的运行范围内。
密码文件格式: passwd
1[root@centos66 ~]$ (umask 066; echo "web" > /etc/rsync.pass)
2[root@centos66 ~]$ cat /etc/rsync.pass
3web
4[root@centos66 ~]$ ll /etc/rsync.pass
5-rw------- 1 root root 4 Dec 26 08:23 /etc/rsync.pass
备注
这里我们只需要指定密码即可,不用用户名。
8.5.2.11. 初步测试同步
1[root@localhost web]# rsync -avz web@192.168.1.104::web --password-file=/etc/rsync.pass /app/web
2receiving incremental file list
3file has vanished: "/proc" (in web)
4file has vanished: "/cygdrive/c" (in web)
5./
6新建 RTF 文档.rtf
7cygdrive/
8dev/
9
10sent 124 bytes received 598 bytes 131.27 bytes/sec
11total size is 7 speedup is 0.01
12rsync warning: some files vanished before they could be transferred (code 24) at main.c(1518) [generator=3.0.9]
13[root@localhost web]# ll
14total 4
15dr-xr-xr-x. 2 197609 197121 6 Jan 14 10:24 cygdrive
16dr-xr-xr-x. 2 197609 197121 238 Jan 14 10:24 dev
17-rwxrwx---. 1 197609 197121 0 Jan 14 09:41 test.txt
备注
这里我不知道为何也罢cygdrive和dev这个目录同步过来了。 不知道为啥的.
8.5.2.12. 写脚本完成自动拉取服务器数据
安装inotify-tool工具
1[root@centos66 yum.repos.d]$ yum install inotify-tools
编写rsync脚本
1#!/bin/bash
2
3user=web
4remote_module=web
5local_dir=/app/web/
6ip=192.168.1.104
7password_file=/etc/rsync.pass
8
9
10/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $local_dir | while read DATE TIME DIR FILE;do
11
12 filechange=${DIR}${FILE}
13 # 拉取服务器数据
14 #/usr/bin/rsync -avz --delete --progress --password-file=$password_file $user@$ip::$remote_module $local_dir &
15 # 推送本机的数据
16 /usr/bin/rsync -avz --delete --progress --password-file=$password_file $local_dir $user@$ip::$remote_module &
17
18 date_str=/var/log/rsync_$(date "+%F").log
19 echo "At ${TIME} on ${DATE}, file $filechange was backed up via rsynce" >> $date_str 2>&1
20done
8.5.2.13. 配置计划任务
将上面的脚本放到while true里面即可,或者修改脚本为sysv脚本。