文件同步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
posted @ 2019-03-28 15:11  翎戍  阅读(304)  评论(0编辑  收藏  举报