zoukankan      html  css  js  c++  java
  • 文件同步RSYNC


    特点:
       使用rsync算法。支持多平台
      rsync同步源表示服务端
      rsync发起端表示客户端
     命令格式:rsync [选项] 原始位置 目标位置
      常用选项:
       -a:归档模式,递归并保留对象属性,等同于 -rlptgoD
       -v:显示同步过程的详细(verbose)信息
       -z:在传输文件时进行压缩(compress)
       -H:保留硬链接文件
       -A:保留ACL属性信息
       --delete:删除目标位置有而原始位置没有的文件(强制同步,多余的全删掉)
       -r:递归模式,包含目录及子目录中所有文件
       -l:对于符号链接文件仍然复制为符号链接文件
       -p:保留文件的权限标记
       -t:保留文件的时间标记
       -g:保留文件的属组标记(仅超级用户使用)
       -o:保留文件的属主标记(仅超级用户使用)
       -D:保留设备文件及其他特殊文件
     ssh模式:
      同步源:
       cd /var/ssh
       setfacl -m u:zhangsan:rwx .          #对目录进行授权
      发起端:
       rsync -avz zhangsan@10.244.16.21:/var/ssh/* /var/ssh-c/   #下行同步
       rsync -avz /var/ssh-c/* zhangsan@10.244.16.21:/var/ssh/   #上行同步
       
     rsync模式:
       同步源:
      创建配置文件(默认不存在)
      vim /etc/reyncd.comf
       port 873  #指定端口
       log file = /var/log/rsyncd.log  #指定日志文件存放位置
       pid file = /var/run/rsync.pid  #pid文件存放位置
       [share]        #共享名
         connect = rsync server  #描述信息
         path = /var/rsync   #同步路径
         read only = yes    #读写权限【yes表示开启只读,false表示可以写。如果是yes使用rsync源上行同步时会报错】
         dont compress = *.gz *.bz2 *.zip  #不压缩的后缀
         auth users = aa    #认证的用户名
         secrets file = /etc/rsyncd_users.db  #认证的密码文件(默认不存在,也需要创建)
      创建密码文件:
       vim /etc/rsyncd_users.db
        aa:123456 #用户名:密码
       chmod 600 /etc/rsyncd_users.db  #密码文件必须改为600,否则认证失败。
      启动rsync
       rsync --daemon      #--daemon表示以进程的方式启动
       netstat -antp查看有没有873端口
       发起端:
      两种共享名同步格式:
       rsync -avz aa@10.244.16.21::share  /var/rsync-c/
       rsync -avz rsync://aa@10.244.16.21/share /var/rsync-c/
     
    免密码验证
     ssh源模式:
     (密钥对登陆)
      ssh-keygen -t rsa
      ssh-copy-id aa@10.244.16.21
     RSYNC模式:
     源声明环境变量export RSYNC_PASSWORD=密码
     
    实时同步:
    RSYNC+INOTIFY
     gcc编译环境:
      yum install -y gcc*
     软件包:
      inotify-tools-3.14.tar.gz ocaml-3.10.1.tar.gz  unison-2.13.16.tar.gz
     安装:
      tar -zxf inotify-tools-3.14.tar.gz
      cd inotify-tools-3.14 && ./configure && make && make install
     调整inotify内核参数
     vim /etc/sysctl.conf(非必需,具体大小根据实际情况来)
      max_queue_events  监控队列大小。官方推荐16384
      max_user_instances 最多监控实例数。官方推荐1024
      max_user_watches 每个实例最多监控文件数。官方推荐1028576
     编写触发rsync机制的脚本
     vim rsync.sh
      #!/bin/bash
      a="inotifywait -mrq -e modify,create,move,delete /var/rsync-c"
      #监控对指定目录的更改(modify)、创建(create)、移动(move)、删除(delete)
      b="rsync -avz /var/rsync-c/* root@10.244.16.21:/var/rsync"
      #进行rsync上行同步操作
      $a | while read directory event file  
      #持续监控过程中一旦读到了目录指定事件的发生。执行do...done里面的操作。
      do
        $b
      done
     脚本后台持续运行
      bash rsync.sh &
     
     
     
    https://blog.51cto.com/jianghm/1947701
  • 相关阅读:
    get started with laravel
    redis消息队列
    javascript模板引擎Mustache
    YIi 权限管理和基于角色的访问控制
    Yii CDbCriteria
    C++ 推断进程是否存在
    IE浏览器开启对JavaScript脚本的支持
    最小公约数(欧几里得算法&&stein算法)
    Nyoj 43 24 Point game 【DFS】
    【蓝桥杯】PREV-5 错误票据
  • 原文地址:https://www.cnblogs.com/lingshu/p/10615139.html
Copyright © 2011-2022 走看看