美文网首页rsync
rsync定时同步

rsync定时同步

作者: 二郎5 | 来源:发表于2019-04-02 15:40 被阅读0次

    rsync 是一个远程同步工具,可以用来备份数据库,或者图片服务器的图片

    系统:centos6.4
    
    主服务器IP:192.168.1.136(源服务器)
    
    备份服务器IP:192.168.1.137(目标服务器)
    

    一、安装

    查看是否安装,没有安装就yum 安装一下
    
    rpm -qa | grep rsync
    
    yum install rsync xinetd
    

    二、服务器端配置(192.168.1.137)

    1、修改 disable 的值为 no

    vim /etc/xinetd.d/rsync
    

    2、加入自启动

     chkconfig rsync on
    
     chkconfig xinetd on
    

    3、为方便统一管理,将rsync 相关文件放在一个文件夹下【 rsyncd 】

     mkdir /etc/rsyncd
    

    4、创建配置文件(服务端客户端都需要手动创建)

        vim /etc/rsyncd/rsyncd.conf
    
        内容/参数注释如下
    
        # 用户和用户组
    
        uid = root
    
        gid = root
    
      # 允许访问的客户机
    
        hosts allow = 192.168.1.137
    
        #拒绝访问的
    
        #hosts deny = 0.0.0.0/32
    
        # 能否切换目录
    
        use chroot = no
    
        # 最大链接数
    
        max connections = 10
    
        # pid文件的存放
    
        pid file = /etc/rsyncd/rsyncd.pid
    
        # max connections 参数的锁文件的存放位置
    
        lock file = /etc/rsyncd/rsync.lock
    
        # 使 rsync 服务器将传输操作记录到传输日志文件
    
        transfer logging = true
    
        log format = "%o %h [%a] %m (%u) %f %l"
    
        ##########################################################
    
        #  可以使用的日志格式定义符如下所示:
    
        #  %a - 远程IP地址
    
        #  %h - 远程主机名
    
        #  %l - 文件长度字符数
    
        #  %p - 该次 rsync 会话的 PID
    
        #  %o - 操作类型:”send” 或 “recv”
    
        #  %f - 文件名
    
        #  %P - 模块路径
    
        #  %m - 模块名
    
        #  %t - 当前时间
    
        #  %u - 认证的用户名(匿名时是 null)
    
        #  %b - 实际传输的字节数
    
        #  %c - 当发送文件时,记录该文件的校验码
    
        ##########################################################
    
        # 日志记录文件的存放
    
        log file = /etc/rsyncd/rsyncd.log
    
        # 欢迎信息
    
        # motd file = /etc/rsyncd/rsyncd.motd
    
      ## 模块
    
        # 模块名 自定义
    
        [rsyncd]
    
        # 指定文件目录所在位置 [必须]
    
        path = /home/wwwroot/attachments
    
        # 注释
    
        comment = rsync files
    
        # 指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。
    
        # 一般来说 rsync 在出现 I/O 错误时将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题
    
        ignore errors = true
    
        # 指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传
    
        read only = false
    
        # 指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出
    
        list = no
    
        # 同步验证时用的账号,这里的用户和系统用户没有任何关系。
    
        # 用户名和口令以明文方式存放在 secrets file 参数指定的文件中
    
        auth users = rsync
    
        # 指定认证文件
    
        secrets file = /etc/rsyncd/rsyncd.secrets
    
        # 指定是否监测口令文件的权限,若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件
    
        strict modes = true
    
    配置文件默认要在 /etc下
    
    [plain] view plain copy print?
    
    ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
    
    5、创建认证文件 格式 验证名:验证密码 一行一个,不必是系统用户
    
        vim /etc/rsyncd/rsyncd.secrets
    
        内容为
    
        rsync:123456  格式:密码:文件
    
    6、设置认证文件的权限
    
        chown root:root /etc/rsyncd/rsyncd.secrets
    
        chmod 600 /etc/rsyncd/rsyncd.secrets
    
    7、添加防火墙策略
    
      1、 打开默认端口 873
    
        vim /etc/sysconfig/iptables
    
        2、加入iptables
    
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
    
        重启生效
    
        service iptables restart
    
        启动 rsync
    
        rsync --daemon
    
        查看是否启动
    
        lsof -i:873
    
        看见这样的信息就是成功启动了
    
        COMMAND  PID USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
    
        rsync  17978 root    4u  IPv4  93140      0t0  TCP *:rsync (LISTEN)
    
        rsync  17978 root    5u  IPv6  93141      0t0  TCP *:rsync (LISTEN)
    

    三、客户器端配置

    1、按上述步骤安装好rsync
    
    
    
    2、创建密码文件,并授权600
    
        ##echo '123456' > /etc/rsyncd/rsyncd.secrets
    
        ##chown root:root /etc/rsyncd/rsyncd.secrets
    
        ##chmod 600 /etc/rsyncd/rsyncd.secrets
    
    3、测试:将客户端/data/pass目录下的所有内容推动到服务端(192.168.1.137)的rsyncd模块指定的路径
    
    rsync --ignore-errors -pvzsltD --port=873 --password-file=/etc/rsyncd/rsyncd.secrets -r /data/paas/ rsync@192.168.1.137::rsyncd
    
    
    
    相关参数:
    
    -r --recursive:递归到目录中去,否则会报错:skipping directory...
    
    --password-file 指定密码文件,存放密码
    
    -a archive mode; equals -rlptgoD,归档模式,相当于-rlptgoD,保证文件的属性,创建时间,用户组等信息
    
    -v 进度信息
    
    -z 压缩传输
    
    --delete 保证客户端和服务器端的数据完全一致,若服务器文件被删除了,客户端也会删除
    
    详细的参数列表执行 rsync -h 查看,一般来说 -avz 和 --delete 就可以满足需求了
    

    四、定时备份/同步

    在客户端设置定时执行同步
    
    利用crontab
    
    若没安装 crontab 执行如下命令安装
    
    yum install crontabs
    
    添加自启动
    
    chkconfig crond on
    
    启动
    
    service crond start
    
    添加定时任务
    
    crontab -e
    
    加入(一分钟执行一次同步)
    
    */1 * * * * rsync --ignore-errors -pvzsltD --port=873 --password-file=/etc/rsyncd/rsyncd.secrets -r /data/paas/ rsync@192.168.1.137::rsyncd
    
    具体时间根据自己要求更改,比如每天凌晨1点执行一次同步,0 1 * * *
    
        附:rsync 常用参数的具体解释如下:
    
        -v, --verbose 详细模式输出
    
        -q, --quiet 精简输出模式
    
        -c, --checksum 打开校验开关,强制对文件传输进行校验
    
        -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
    
        -r, --recursive 对子目录以递归模式处理
    
        -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
    
        -suffix=SUFFIX 定义备份文件前缀
    
        -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
    
        -l, --links 保留软链结
    
        -p, --perms 保持文件权限
    
        -o, --owner 保持文件属主信息
    
        -g, --group 保持文件属组信息
    
        -t, --times 保持文件时间信息
    
        -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
    
        --delete 删除那些DST中SRC没有的文件
    
        --delete-excluded 同样删除接收端那些被该选项指定排除的文件
    
        --delete-after 传输结束以后再删除
    
        --ignore-errors 及时出现IO错误也进行删除
    
        --force 强制删除目录,即使不为空
    
        --timeout=TIME IP超时时间,单位为秒
    
        --progress 显示备份过程
    
        -z, --compress 对备份的文件在传输时进行压缩处理
    
        --exclude=PATTERN 指定排除不需要传输的文件模式
    
        --include=PATTERN 指定不排除而需要传输的文件模式
    
        --exclude-from=FILE 排除FILE中指定模式的文件
    
        --include-from=FILE 不排除FILE指定模式匹配的文件

    相关文章

      网友评论

        本文标题:rsync定时同步

        本文链接:https://www.haomeiwen.com/subject/huygbqtx.html