zoukankan      html  css  js  c++  java
  • 文件同步 单向rsync 双向unison 监控inotifywait 免密登录

    1、负载均衡中文件同步必不可少,我这边选择rsync来实现文件同步

      rsync同步文件机制更适用于单向文件同步,可配合unison实现双向同步功能。

    实现同步的两种方法

    一:ssh方法

      rsync -avz 用户名@服务器ip /文件地址 本地目录

      回车

      input password

      

    二:rsync同步

      首先安装yum install rsync

      创建 /etc/rsyncd.conf

    uid = nobody
    gid = nobody
    use chroot = yes
    max connections = 4
    pid file = /var/run/rsyncd.pid
    exclude = lost+found/
    transfer logging = yes
    timeout = 900
    ignore nonreadable = yes
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
     
     [data]
             path = /home/cloud-user/rsync
             comment = ftp export area
             read only = yes
             auth users = username
             secrets file = /etc/rsync_user.pas
                                                      

    创建用户密码文件

    vim /etc/rsync_user.pas

    username:password

    启动同步功能

    rsync --daemon

    另一台服务器同步

    rsync -acz username@ip::data 本地目录
    回车
    input password

    注意:对于auth 失败;最可能的原因是rsync_user.pas的权限 必须为600

    对于上行同步和下行同步失败还有可能是因为权限的问题,对于权限有两道检测;1:rsync配置文件的对于该用户的权限为只读;2:服务器对于rsync用户在同步的文件夹的权限不够;

    上行同步

    rsync -avz 本地目录 username@ip:服务器目录

    免密登陆

    方式一:ssh免密登录

    ssh-keygen -t rsa
    //回车、回车、回车

    系统会生成.ssh目录 ,该目录下有三个文件

      id_rsa : 生成的私钥文件

      id_rsa.pub : 生成的公钥文件

      know_hosts : 已知的主机公钥清单

    提交自己的用户名和密码去服务器

    ssh-copy-id username@ip //回车
    input password

    然后可以通过ssh登录

    ssh username@ip

    二:rsync免密同步

    系统中有一个环境变量RSYNC_PASSWORD 初始为空

    设置RSYNC_PASSWORD密码

    export RSYNC_PASSWORD=password

    然后通过rsync同步

    rsync -acz username@ip::data 本地目录

    如果要实现实时同步需要先监控文件夹中的变化

    使用inotifywait

    编译安装inotify-tools-3.13

    开始监控

    //监控;监控/home/cloud-user/rsync/ 的增加和删除操作

    inotifywait -mrq -e create,delete /home/cloud-user/rsync/
    //同步;将本地home/cloud-user/rsync中的文件同步到改ip下的home/cloud-user/rsync中
    rsync -avz /home/cloud-user/rsync/* cloud-user@IP:/home/cloud-user/rsync

    编写inotifywait.sh脚本文件

    #!bin/bash
    inotifywait="inotifywait -mrq -e create,delete /home/cloud-user/rsync/"
    rsync="rsync -avz /home/cloud-user/rsync/* cloud-user@IP:/home/cloud-user/rsync"
    $inotifywait | while read directory event file
    do
        $rsync
    done
    //执行脚本
    bash inotifywait.sh

     rsync 更适合单向同步

    如果要实现双向同步,可使用unison

    yum install unison

    编写脚本inotifywait_unison.sh

    #!bin/bash
    inotifywait="inotifywait -mrq -e create,delete,modify,move /home/cloud-user/rsync/"
    unison="unison -batch /home/cloud-user/rsync/ ssh://IP//home/cloud-user/rsync"
    $inotifywait | while read directory event file
    do
             $unison
    done

    注意shell文件权限

    执行:

    nohup bash inotifywait_unison.sh &

    另一台服务也是相同操作,注意修改脚本文件中的ip

  • 相关阅读:
    图像融合之拉普拉斯融合(laplacian blending)
    真实场景的虚拟视点合成(View Synthsis)详解
    真实场景的双目立体匹配(Stereo Matching)获取深度图详解
    OpenCV亚像素角点cornerSubPixel()源代码分析
    OpenCV角点检测goodFeaturesToTrack()源代码分析
    OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
    引导图滤波(Guided Image Filtering)原理以及OpenCV实现
    OpenCV3.4两种立体匹配算法效果对比
    文件操作常用函数
    two Pass方法连通域检测
  • 原文地址:https://www.cnblogs.com/jackylee92/p/6557636.html
Copyright © 2011-2022 走看看