系统相关
首页 > 系统相关> > rsync linxu实时同步文件到windows

rsync linxu实时同步文件到windows

作者:互联网

rsync linxu实时同步文件到windows

rsync 同步数据,数据的拉取和推送只能在客户端操作。

即需要在客户端执行命令,在服务端配置rsyncd.conf文件,启动rsync。

linxu实时同步文件到windows,所以客户端为 linux,服务端为 windows。

一、服务端windows

1.下载软件: cwRsyncServer
下载链接: https://files.cnblogs.com/files/yblue/cwRsyncServer_4.1.0_Installer.rar

2.安装 cwRsyncServer 软件
建议选默认路径安装,我刚开始装D盘,一直都没有成功,后来默认路径就行了。

默认路径:C:\Program Files (x86)\ICW。

装的时候有个用户账号和密码,那个设成跟你配置文件的一样,即auth users的值,secrets file中密码的值。

(windows服务器 windows server 2012 r2 安装这个软件的时候不会自动创建用户,需要去计算机添加用户,那个密码策略很麻烦,可以看这图片)
在这里插入图片描述
3.修改C:\Program Files (x86)\ICW\rsyncd.conf 配置文件

gid = 0
pid = 0
uid = 0
use chroot = false
strict modes = false
port = 873
max connections = 200
lock file = rsyncd.lock 
log file = /cygdrive/e/rsync_config/rsyncd.logtransfer 
logging = yes
hosts allow = *[server]path = /cygdrive/e/rsync_test_data
auth users = rsync
secrets file = /cygdrive/e/rsync_config/configPwd.passwd
read only = no
list = no

主要参数有:[] :模块,path:存放数据的路径,auth users:虚拟用户,secrets file:密码文件,hosts all:允许访问的IP。

详细参数可以参考这篇文章:https://www.cnblogs.com/koushuige/p/9162920.html

4.权限配置

//权限
C:\Program Files (x86)\ICW\bin\chmod.exe 600 /cygdrive/e/rsync_config/configPwd.passwd
//所有者
C:\Program Files (x86)\ICW\bin\chown.exe rsync /cygdrive/e/rsync_config/configPwd.passwd

给用户授权可能命令会失效,我试过多次都是失效,去文件那里配置权限。
在这里插入图片描述
4.1修改密码文件用户权限步骤如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述这样就给rsync用户对密码文件加进行授权。

4.2 最好也修改同步文件的用户权限
比如我的path = /cygdrive/e/rsync_test_data,今天在windows系统上没配置不会报错,但是部署到windows服务器 windows server 2012 r2 的时候就报错 rsync: failed to set times on “.” (in server): Is a directory (21) rsync。

5.在服务中找到RsyncServer,启动即可
在这里插入图片描述
到这里windows 服务端 Rsync 配置完成。

二、客户端Linxu

1.linxu安装rsync

//yum安装rsync
yum install rsync

2.客户端只需要创建一个密码文件就行了,密码文件只需要密码,密码需要跟服务端的密码文件中的一致,并授权。
在这里插入图片描述

//在etc下创建文件rsync.password
touch /etc/rsync.password
//给密码文件写入密码
echo "123456">/etc/rsync.password
//查看密码文件内容(不需要)
cat /etc/rsync.password<br>//授权<br>chmod 600 /etc/rsync.password

3.使用inotify实时监控
3.1 下载安装inotify

//直接下载inotify,我是下载在/home/tools/文件夹
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
//解压
tar xf inotify-tools-3.14.tar.gz
//进入目录
cd inotify-tools-3.14 
//指定参数configure,设置安装的地点
./configure --prefix=/usr/local/inotify-tools-3.14
//查看是否安装成功
make && make install
echo $?//如果返回0则好了,127的话输入ls,然后再执行echo $?
cd /usr/local/inotify-tools-3.14
//设置字符集
LANG=EN

3.2 编写inotify实时监控脚本

//创建/server/scripts目录 一般脚本放这里
mkdir /server/scripts -p
cd /server/scripts
//修改脚本文件
vim inotify.sh

3.3脚本的内容

#!/bin/sh
#para 
host01=服务端IP
src=客户端需要同步的文件夹
dst=服务端模块名
user=服务端用户名
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify-tools-3.14/

#judge
if [ ! -e "$src" ] \
|| [ ! -e "${rsync_passfile}" ] \
|| [ ! -e "${inotify_home}/bin/inotifywait" ] \
|| [ ! -e "/usr/bin/rsync" ] ;
then
    echo "Check File and Folder"
    exit 9
fi    

${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \
| while read file
       do 
       #rsync  -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1
           cd $src && rsync -aruz -R --delete ./   --timeout=100 $user@$host01::$dst  --password-file=${rsync_passfile} >/dev/null 2>&1  
           done
exit 0

3.4执行脚本文件

//测试 执行脚本文件
sh -x inotify.sh

3.5让脚本在后台运行

//查看 inoti开头的进程
ps -ef|grep inoti
//杀死进程  xxxx就是所有inoti开头的进程的进程号
kill xxxx
//开启 inotify进程后台运行
nohup sh /server/scripts/inotify.sh & 

到此客户端Linxu就配置完毕了。

三、小结

rsync实现系统间的文件同步,数据的拉取和推送只能在客户端操作,确定客户端的关键就看你数据的流向了。

网上有好多不同系统间文件同步,Linux->Linxu,Linxu->windows,windows->Linxu,windows->window,还有双向同步的(那就两边都当成服务端和客户端,两边都配),其实都差不多。

步骤大概如下:

一:服务端配置
1.服务端配置 rsync.conf文件 (具体参考上面)

2.权限配置

设置密码文件夹:chmod 600 密码文件全路径

给用户授权密码文件夹权限:chown 用户名 密码文件全路径

设置同步数据存放位置path:chmod 600 密码文件全路径 (可不授权,最好也给设置权限,不然可能会报错)

3.开启rsync

windows 开启服务 (Linxu 启动rsync:rsync --daemon)

二、客户端配置
1.配置密码文件,文件只需要服务端那边密码文件的密码

2.权限配置

设置密码文件夹:chmod 600 密码文件全路径

3.就是命令执行了,也可以写脚本运行(具体参考上面)

三、排错的逻辑
1.防火墙和selinux(记住是局域网,非局域网就域名吧,你正常查出来的IP都是本地路由分配的,别人那个IP是那边分配的)

2.查看日志文件 rsyncd.log

3.检查你部署的流程是否会有出错

想看更多精彩内容,可以关注我的博客园
我的博客园

标签:rsync,inotify,windows,密码文件,linxu,服务端,客户端
来源: https://blog.csdn.net/weixin_38295272/article/details/117630197