zoukankan      html  css  js  c++  java
  • 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等自动更新

  • 相关阅读:
    Linux守护进程
    sequel pro无法连接mysql服务器
    socket编程之并发回射服务器2
    Unix的I/O模型
    nginx.conf laravel 配置
    phpstudy使用PHP+nginx配置Laravel
    nginx配置文件分开配置
    centos安装composer
    linux下 设置php的环境变量 php: command not found
    laravel 安装
  • 原文地址:https://www.cnblogs.com/bwbfight/p/14559166.html
Copyright © 2011-2022 走看看