rsync实现Linux与windows增量更新数据

增量式在linuxwindows 之间互相更新代码方式:

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步windows和Linux中的数据。

主要的配置项:

Linux服务器端安装rsync服务(默认一般Linux就会安装),没有,则需要去官网下载源码安装: https://rsync.samba.org/

安装步骤如下

tar -xvf rsync-3.2.2.tar.gz
cd rsync-3.2.2

./configure –prefix= path(安装路径)
make&&make install

一 .配置的前提

Linux下:

1)查看selinux机制,关闭selinux

 Getenforce--------》Disabled

否则,请关闭selinux机制,setenforce 0

或者直接配置生效:

vi /etc/selinux/config

 将SELINUX=enforcing改为SELINUX=disabled

Source  /etc/selinux/config


2)开启防护墙tcp 873端口,以便日后改为服务器使用

 vi /etc/sysconfig/iptables #编辑防火墙配置文件

-A INPUT -m state –state NEW -m tcp -p tcp –dport 873 -j ACCEPT

或者直接关闭防火墙

Systemctl stop  firewalld

Windows下同样需要关闭防火墙

配置文件:

rsync服务器的配置文件rsyncd.conf (/etc/rsyncd/rsyncd.conf):

rsync的主要有以下三个配置文件:

rsyncd.conf(主配置文件)

rsyncd.passwd(密码文件)

Linux 服务器下:配置如下:

1) 在/etc目录下创建一个rsyncd的目录,用来存放rsyncd.passwd文件

mkdir rsyncd&&touch rsyncd.passwd

chmod 600 rsyncd.pwsswd        #为了密码的安全性,我们把权限设为600

配置rsyncd.passwd文件:

rsyncd.passwd的内容格式为 用户名:密码(linux服务器用户名和密码)

内容如下root:123456

2) vi /etc/rsyncd/rsyncd.conf,内容如下:

uid = root

gid = root

use chroot = no

max connections = 4

lock file =/var/run/rsyncd.lock

log file = /var/log/rsyncd.log

exclude = lost+found/

transfer logging = yes

timeout = 900

ignore nonreadable = yes

dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[www]

path = 代码的路径

list=no

ignore errors

hosts allow=*

auth users = root

secrets file=/etc/rsyncd/rsyncd.passwd

启动linux下的rsync 服务器:

Rsync --daemon --config=/etc/rsyncd.conf

Windows安装:(具体请看windows安装)

CwRsync server 和client

Linux目录中的文件同步到Linux找到目录:(只更新部分目录,也可以全部更新)

第一次更新,全部更新:

执行:(从linux更新到windows,更新所有,其中linux下代码路径需要给予读写权限)

Chmod 0666 -R path(代码路径)

在windows下cmd(win+R)执行:

Rsync --port=873 -avzP --delete --password-file=/cygdrive/e/rsync.passwd  root@192.168.100.177::www  /cygdrive/E/CODE_SYNC

其中

#–port=873 #端口

#--password-file 密码文件

#root #执行数据同步的用户

#192.168.100.177 #服务器地址

#www#模块名称

#--delete #从cwRsync客户端E:cwRsync sync_data目录中删除与Rsync服务端代码目录中不相同的数据,即保证两边的数据完全一致

#/cygdrive/E/cwRsync/rsync_data 表示本地的同步文件夹E盘:E:/cwRsync/rsync_data为同步文件夹

二. windows下配置:

如下是cwRsyncServer安装过程,一直点下一步就可以了,这里就不一一贴出来了:

    

 

    

    这里需要创建一个帐户,用默认的就好,也可以改成rsync,设置一个自己的密码就OK了。

    

    安装完成之后下面开始配置,打开安装目录下的文件目录:C:Program Files (x86)ICW,修改rsyncd.conf配置文件的内容为以下配置;

    

  修改配置rsyncd.Conf:

use chroot = false

strict modes = false

hosts allow = *

log file = rsyncd.log

uid = 0

gid = 0

# Module definitions

# Remember cygwin naming conventions : c:work becomes /cygwin/c/work

#

[test]

path = /cygdrive/e/CODE_SYNC

read only = false

transfer logging = yes

list=no

ignore errors

hosts allow=*

auth users =rsync

secrets file=/cygdrive/e/cwRsync/rsync_server.passwd    

    到这里了就要在E盘下新建一个CODE_SHARE的目录,这个目录就是指它里面的所有数据同步到linux的指定目录去的,也就是windows下的rsyncd.conf配置文件的[test]模块对应的文件。

还需要修改一下CODE_SHARE这个目录的一些相关属性信息,右键这个文件选属性:

Windows密码文件下: /e/cwRsync/rsync_server.passwd(windows cwrsync刚刚设置的用户名:密码)

    

设置windows下/e/CODE_SYNC,目录的属性,如下修改成配置的用户名,即SvcCWRSYNC或rsync。

    

输入完SvcCWRSYNC这个用户名后点“检查名称”就可以匹配上了,再点确定就OK了。

最后再改一下这个文件对这个用户的访问权限:

    

选中我的电脑--右键管理---服务和应用--服务(services.msc),找到RsyncSever,双击--启动,把这个服务器起动起来:

    

 

到这里应该是说windows下的就配置完了,但是要注意的是如果你的linux需要用telnet来连接到windows上来的话那windows上的防火墙记得要关闭,否则很可能连不上去,也可以在本上的测试一下,出现以下情况就说明可以连接上去了,说明windows服务可用了。

测试:在Linux下执行,只更新指定目录:

Rsync --port=873 -vzrtopgu --progress --update --include-from="/etc/include"    rsync@192.168.100.105::test  /home/test1 --password-file=/etc/rsync.passwd

Vi /etc/include 可以配置成经常修改的源代码路径:

3rdparty/

tpswink/

 base/

 oam/

 common/

 test/

 callp/

其中:参数--include-frome,可以把要同步的目录全部写到一个文件中,然后通过--include-frome来读取这个文件

一旦windows代码修改,在Linux上执行如上命令即可增量更新,同理,linux 下代码修改,一样可以在cmd上执行更新的命令(但最好指定文件交更新,全部更新,一旦编译,可能会更新库,bin等不需要的东西),如果需要也可以通过crontab配置自动更新,windows也可以通过bat等自动更新

原文地址:https://www.cnblogs.com/bwbfight/p/14559166.html