zoukankan      html  css  js  c++  java
  • rsync单向同步

    系统版本:Centos X64 6.4(最小化安装)

    先安装依赖包

    1 [root@localhost ~]# yum install vim wget lsof gcc make cmake makeconf autoconf automake openssh -y
    View Code


    开始下载安装

    1 [root@localhost ~]# wget http://down1.chinaunix.net/distfiles/rsync-3.0.4.tar.gz
    2 [root@localhost ~]# tar zxf rsync-3.0.4.tar.gz 
    3 [root@localhost ~]# cd rsync-3.0.4
    4 [root@localhost rsync-3.0.4]# ./configure && make && make install
    View Code

    安装完毕后命令的绝对路径:/usr/local/bin/rsync

    参数:

    -a:表示归档模式,用递归方式传输文件

    -v:详细输出

    -z:传输时对文件进行压缩处理

    -r:对子目录进行递归

    -t:保持文件的时间信息

    -p:保持文件的权限

    -o:保持文件的属主信息

    -g:保持文件的属组信息

    --delete:表示以服务端为基准进行同步,保持服务端的目录文件和客户端的完全一致

    --progress:用于显示数据同步的过程

    --exclude:排除不需要同步的目录或者文件

    同步本地目录到远程主机

    命令格式:rsync -av --delete 本地目录绝对路径(不能带斜杠)  远程主机用户名@远程主机地址:远程绝对路径

    如果没做ssh信任关系的话会需要输入远程主机的登录密码

    1 [root@localhost ~]# rsync -a --delete /etc root@192.168.1.100:/tmp
    View Code

    同步本地目录下的文件到远程主机

    命令格式:rsync -av --delete 本地目录绝对路径/  远程主机用户名@远程主机地址:远程绝对路径

    1 [root@localhost ~]# rsync -a --delete /etc/ root@192.168.1.100:/tmp
    View Code

    把rsync作为服务启动让远程客户端来同步

    rsync服务端:192.168.1.101

    rsync客户端:192.168.1.100

    在rsync服务端创建一个默认的配置文件/etc/rsyncd.conf,

    内容如下:

     1 #指定传输文件时守护进程具有的用户ID,这里表示默认为nobady
     2 uid=nobady
     3 #指定传输文件时守护进程具有的用户组ID,这里表示默认为nobady
     4 gid=nobody
     5 #禁止切换目录
     6 use chroot=no
     7 #客户端的最大连接数
     8 max connection=10
     9 #检查口令文件的权限,口令文件的权限用户属组必须是root,权限必须是600
    10 strict modes=yes
    11 #pid文件的位置
    12 pid file=/var/run/rsyncd.pid
    13 #lock文件的位置
    14 lock file=/var/run/rsyncd.lock
    15 #日志文件的位置
    16 log file=/var/log/rsyncd.log
    17 
    18 #定义模块名
    19 [gamelog]
    20 #指定这个模块需要同步的路径
    21 path=/usr/local/
    22 #这个是注释 可以自己定义
    23 comment=gamelog file
    24 #忽略一些无关的IO错误
    25 ignore errors
    26 #no代表客户端可以上传文件,yes表示只读取
    27 read only=no
    28 #no表示客户端可以下载文件,yes表示不能下载
    29 write only=no
    30 #表示允许连接的主机地址
    31 hosts allow=192.168.1.100
    32 #表示不允许连接的主机地址
    33 hosts deny=*
    34 #不允许该模块被客户端列出
    35 list=false
    36 #指定传输文件时守护进程具有的用户ID,
    37 uid=root
    38 #指定传输文件时守护进程具有的用户组ID,
    39 gid=root
    40 #用来指定连接该模块的用户名,用户名可以自定义
    41 auth users=back
    42 #指定密码文件,文件里面记录的是用户名:密码
    43 secrets file=/etc/srs.pass
    View Code

    帐号密码文件/etc/srs.pass

    1 [root@localhost ~]# ll /etc/srs.pass 
    2 -rw-------. 1 root root 12 Jul 30 20:49 /etc/srs.pass
    3 [root@localhost ~]# cat srs.pass 
    4 back:123456
    View Code

    启动服务端程序

    1 [root@localhost ~]# /usr/local/bin/rsync --daemon
    View Code

    也可以指定配置文件启动:/usr/local/bin/rsync --daemon --config=配置文件绝对路径

    客户端192.168.1.100

    创建密码文件:

    1 [root@localhost etc]# echo "123456" > rsyncd.pass 
    2 [root@localhost etc]# chmod 600 rsyncd.pass 
    View Code

    客户端同步命令格式:/usr/local/bin/rsync -vzrtopg --delete --progress --exclude "需要排除的目录和文件"  服务端用户名@服务端地址::模块名字 本地目录 --password-file=密码文件路径

    1 [root@localhost etc]# rsync -vzrtopg --delete --password-file=/etc/rsyncd.pass  back@192.168.1.101::gamelog /tmp/
    2 receiving incremental file list
    3 ./
    4 xx
    5 
    6 sent 79 bytes  received 177 bytes  512.00 bytes/sec
    7 total size is 1214828  speedup is 4745.42
    View Code

    出错的排查方法

    1.查看防火墙是否关闭,或者对873端口添加了白名单,可以在客户端telnet 服务端的873端口

    2.查看帐号密码文件的权限和所属用户是否正确

    shell安装脚本:

    rsync_install.sh

    #!/bin/bash
    
    function Install_Rsync()
    {
        yum install wget gcc make automake makeconf openssh*-y 
        wget http://down1.chinaunix.net/distfiles/rsync-3.0.4.tar.gz
        tar zxf rsync-3.0.4.tar.gz && cd rsync-3.0.4
        ./configure && make && make install
    }
    
    function Create_Rsync_Conf()
    {
        cat  <<EOF > /etc/rsyncd.conf
    uid=nobody
    gid=nobody
    use chroot=no
    max connections=10
    strict modes=yes
    pid file=/var/run/rsyncd.pid
    lock file=/var/run/rsyncd.pid
    log file=/var/log/rsyncd.log
    [WEBSERVER]
    path=/webserver
    comment=SHENG file
    ignore errors
    read only=no
    write only=no
    hosts allow=xxx.xxx.xxx.xxx
    hosts deny=*
    auth users=test
    secrets file=/etc/rsyncd.pass
    EOF
    }
    
    
    which rsync
    if [ $? -eq 0 ]
    then
        echo  -e "33[1;32m 33[05m The rsync is Exist! 33[0m"
        Create_Rsync_Conf
        echo -e "33[1;32m The configure file is /etc/rsyncd.conf 33[0m"
    else
        echo -e "33[1;32m Setup rsync 33[0m"
        Install_Rsync
        echo -e "33[1;32m Create config file 33[0m"
        Create_Rsync_Conf
     
        if [ -f /etc/rsyncd.conf ]
        then
            echo -e "33[1;32m The rsync install OK! 33[0m"
        else
            echo -e "33[31m 33[05m The rsync install Fail! 33[0m"
        fi
    fi

    shell启动脚本 放在/etc/init.d/ 下 给755权限 chmod 755 /etc/init.d/rsyncd

    rsyncd

    #!/bin/bash
    
    Rsync_Command=`whereis rsync | awk '{print $2}'`
    
    function Start()
    {
        ${Rsync_Command} --daemon
        if [ $? -eq 0 ]
            then
                echo -e "33[1;32m  The rsyncd start successful...... 33[0m"
            else 
                echo -e "33[31m 33[05m The rsyncd start fail !!!!!!!! 33[0m"
        fi 
    }
    
    function Stop()
    {
        if [ -f '/var/run/rsyncd.pid' ]
            then
                kill -9 `cat /var/run/rsyncd.pid`
                sleep 1
                proce_num=`ps -ef | grep ${Rsync_Command} | grep -v grep | wc -l`
                if [ ${proce_num} -gt 0 ]
                    then
                        echo -e "33[31m 33[05m The rsyncd Stop fail !!!!!!!! 33[0m"
                    else
                        echo -e "33[1;32m  The rsyncd Stop successful...... 33[0m"
                        rm /var/run/rsyncd.pid
                fi
        else
            echo -e "33[31m 33[05m  The /var/run/rsyncd.pid file is not exist! Check rsync is Runing ??? 33[0m"
                  
        fi
    }
    
    function Restart()
    {
        Stop
        sleep 2
        Start
    }
    
    case $1 in
        start)
            Start
            ;;
        stop)
            Stop
            ;;
        restart)
            Restart
            ;;
        *)
            echo -e "33[31m 33[05m Use start|stop|restart 33[0m"
            ;;
    esac
  • 相关阅读:
    java操作练习
    java认知
    java了解
    抽象类及抽象类
    杨辉三角实例菱形实例
    案例分析之运行顺序
    Object类的方法,toString的重写.
    多态
    类的继承
    面对对象
  • 原文地址:https://www.cnblogs.com/pping/p/3879756.html
Copyright © 2011-2022 走看看