zoukankan      html  css  js  c++  java
  • Linux目录同步unison

    最近研究目录同步.最初考虑的是rsync,用的时候发现只能单向同步而且要实现双向还得用inotify.后来发现unison能解决双向同步的问题而且相比rsync简单的多.

    系统平台: CentOS 6.4 x64

    配置过程:
    1.安装 yum install unison.x86_64  (软件包在rpmforge源里)
      同步的两端都要安装且版本必须相同.
    2.配置双机ssh信任
      由于unison在远程同步文件夹要登陆远程服务器,因此要配置两机互相信任
      本地机: 172.16.253.202
      远程机: 172.16.253.201

      1. 在两台机器上创建 RSA密钥
      以下操作要在本地机和远程机上都执行一遍
      (1)以 root 用户登录
      (2)在 root 用户的主目录内创建.ssh 目录并设置正确的权限
        chmod 700 ~/.ssh
      (3)使用 ssh-keygen 命令生成第 2 版本的 SSH 协议的 RSA 密钥
        ssh-keygen -t rsa
        使用默认的私钥(key)和公钥(public key)位置.
        私钥密码(passphrase)为空.
      2. 添加密钥到授权密钥文件(authorized key file)中
        cd ~/.ssh
        ssh 10.178.1.132 cat /root/.ssh/id_rsa.pub >> authorized_keys
        ssh 10.178.1.110 cat /root/.ssh/id_rsa.pub >> authorized_keys
        密钥文件复制到远程端:
        scp authorized_keys 10.178.1.110:/root/.ssh/

      3.测试
      ssh 10.178.1.132 date
      ssh 10.178.1.110 date
      如果不需要输入密码就出现系统日期,说明 SSH 配置成功。

    3.使用配置文件同步.

      配置文件位置: ~/.unison/default.prf

      设置: 

    # Unison preferences file
    root = /opt/unison
    root = ssh://root@172.16.253.201//opt/unison/
    batch = true

      batch = true,表示全自动模式,接受缺省动作,并执行

      执行unison命令即可执行同步.

    默认是运行一次unison进行一次同步, 只能写在cron里作为定时同步. 利用inotify可以实现触发式同步,每次对目录中文件修改都会触发一次同步操作,解决了即时性的问题.

    1.安装inotify软件包.
      yum install inotify-tools -y  (需先安装epel源)

    2.编写同步脚本

    #!/bin/bash
    
    # add this to /etc/rc.local 
    
    /usr/bin/inotifywait -mrq -e modify,delete,create,attrib /opt/unison | while read file
    do
        unison
    done

    3.系统启动时执行脚本文件,添加到/etc/rc.local.执行命令后加 &保证后台运行.

     echo '/DroneStorage/Scriptes/inotify.sh &' >> /etc/rc.local

    参考: http://blog.163.com/yaning_softwo/blog/static/37837721201131103546979/

        

      

        


      

      

  • 相关阅读:
    [CLK Framework] CLK.Settings
    [Architecture Design] CLK Architecture
    记一次 bug 修复 , 未将对象引用实例化
    Invoke 与 BeginInvoke 应用场景
    一次发布生产版程序异常排查总结
    C# 使用 SmtpClient 发送邮件注意项
    MSSql Server 批量插入数据优化
    Window Server 布署 WCF 服务 , 权限配置问题
    C++ 值类型和引用类型传递示例
    VS2015 C#调用C++ 托管代码无法调试问题排查
  • 原文地址:https://www.cnblogs.com/viator42/p/3433169.html
Copyright © 2011-2022 走看看