rsync linxu实时同步文件到windows

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

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

linxu实时同步文件到windows,所以客户端为 linu,服务端为 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中密码的值。

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.log
transfer 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。

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

 给用户授权可能命令会失效,我试过多次都是失效,去文件那里配置权限。

rsync linxu实时同步文件到windows  

4.1修改密码文件用户权限步骤如下:

rsync linxu实时同步文件到windows

 

rsync linxu实时同步文件到windows

rsync linxu实时同步文件到windows

 

rsync linxu实时同步文件到windows

这样就给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,启动即可

rsync linxu实时同步文件到windows

 

到这里windows 服务端 Rsync 配置完成。

  

二、客户端Linxu

1.linxu安装rsync

//yum安装rsync
yum install rsync

2.客户端只需要创建一个密码文件就行了,密码文件只需要密码,密码需要跟服务端的密码文件中的一致,并授权。

rsync linxu实时同步文件到windows

//在etc下创建文件rsync.password
touch /etc/rsync.password
//给密码文件写入密码
echo "123456">/etc/rsync.password
//查看密码文件内容(不需要)
cat /etc/rsync.password
//授权
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

还没写好,先这样了,记住这是在同个局域网才行。

上一篇:linux rsync远程同步 | rsync+inotify实时同步 | 详细讲解


下一篇:在Linux文件系统上有类似USN Journal的东西吗?