rsync实现Linux与windows增量更新数据
增量式在linux和windows 之间互相更新代码方式:
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\rsync_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等自动更新