zoukankan      html  css  js  c++  java
  • linux rsync实时同步

    rsync同步

    同步与复制的差异:
    复制:完全拷贝源到目标
    同步:增量拷贝,只传输变化过的数据

    同步操作:
    remote sync 远程同步
    支持本地复制,或与其他ssh,rsync主机同步。
    官方网站:http://rsync.samba.org/

    命令用法
    rsync [选项] 源目录 目标目录
    常用选项:
    -a:归档模式,相当于-rlptgiD
    -v:显示同步过程详细信息
    -z:传输过程中启用压缩
    -r:递归,包括目录/子目录及所有文件
    -l:保留符号链接文件
    -p,-t:保留文件的权限,时间标记
    -o,-g:保留文件的属主/属组标记
    -D:保留设备文件及其他特殊文件
    -H:保留硬链接文件
    -A:保留文件的ACL属性信息
    -n:测试同步过程,不做实际修改
    --delete:删除目标文件夹内多余的文档(确保源和目标完全一致)

    本地同步
    rsync [选项] 本地目录1 本地目录2
    rsync [选项] 本地目录1/ 本地目录2

    [root@svr ~]# rsunc -a /boot /xxx(同步整个文件夹)
    [root@svr ~]# rsunc -a /boot/ /xxx/(只同步目录下数据)


    服务端要求:服务端应开启sshd服务,并提供授权的用户,密码,此目录对远程目录必须有相应的权限
    rsync+ssh远程同步
    下行同步:rsync [选项] root@x远程目录/ 本地目录
    上行同步:rsync [选项] 本地目录/ root@x远程目录

    下行同步实例:
    [root@svr ~]# rsync root@192.168.4.1:/boot/(浏览远程目录)
    [root@svr ~]# rsync -av root@192.168.4.1:/boot/ /xxx/(将远程主机/boot/目录备份到本地)
    [root@svr ~]# ls /xxx/(查看结果)
    上行同步实例:
    [root@svr etc]# rsync -av /etc root@192.168.4.1:/opt/(将本地的/etc/目录备份到远程主机)
    [root@gw1 opt]# ls(远程机查看结果)
    rh

    ————————————————————————————————————————————
    rsync+rsync远程同步

    同步资源配置文件/etc/rsyncd.conf
    [root@svr ~]# chkconfig rsync on(开启)
    [root@svr ~]# service xinetd restart(重启服务)

    创建rsyncd.conf共享配置(若是匿名共享。可去掉auth users设置)
    [root@svr ~]# vim /etc/rsyncd.conf
    [hydra] (共享文件名)
    path = /usr/src(共享文件目录)
    comment = Rsunc Share Test
    read only = yes
    dont compress = *.gz *.bz2 *.tgz *.zip
    auth users = ruser (许可的用户)
    secrets file = /etc/rsyncd_users.db(用户账户密码的存放路径)
    [root@svr ~]# vim /etc/rsyncd_users.db(创建用户,密码存放文件)
    ruser:123456(用户:密码)
    root:Taren1
    hydra:Anonymous
    [root@svr ~]# chmod 600 /etc/rsyncd_users.db(更改存放用户,密码文件权限)

    查看共享资源:rsync root@x::

    下行同步:rsync [选项] root@x共享名/ 本地目录
    上行同步:rsync [选项] 本地目录/ root@x共享名

    下行同步实例:
    [root@gw1 ~]# rsync -av root@192.168.4.2::hydra/ /myhydra
    [root@gw1 ~]# ls /myhydra/(查看文件)
    debug kernels
    上行同步实例:
    [root@gw1 ~]# rsync -av /opt root@192.168.4.2::hydra
    [root@svr ~]# ls /usr/src/(查看文件)
    debug kernels

    ——————————————————————————————————————————

    关于同步的实时性
    依赖于两个组件:
    监控源文档的变化(inotify)
    调用同步操作的命令行(rsync)语句
    关于inotify机制:
    linux内核2.6.13以上版本默认支持
    需要额外安装控制工具,比如inotify-tools

    inotify实时同步(inotifywait监控目录程序)
    inotify-tools-3.13.tar.gz
    源码包编译安装:
    解包:[root@svr ~]# tar xf /root/inotify-tools-3.13.tar.gz -C /usr/src/
    配置:[root@svr ~]# cd /usr/src/
    [root@svr inotify-tools-3.13]# ./configure
    编译:[root@svr inotify-tools-3.13]# make
    安装:[root@svr inotify-tools-3.13]# make install
    [root@svr ~]# inotifywait
    No files specified to watch!

    inotifywait监控
    基本用法
    inotifywait [选项] 目标文件夹
    常用命令选项
    -m,--monitor:启用监控
    -r,--recursive:递归,涵盖所有子目录
    -q,--quiet:减少输出信息
    -e,--event:限定要监控的事件类型

    实例:
    监控/opt文件夹
    事件类型:modify,move,create,delete,attrib
    [root@svr ~]# inotifywait -mrq -e modify,move,create,delete,attrib /opt
    [root@svr ~]# [root@svr ~]# vim /root/irsync.sh(写个脚本,放后台执行)
    #!/bin/bash
    DIR1="/opt"(DIR1是个变量,后期好更改)
    RCMD="rsync -az --delete $DIR1 /opt2/"(RCMD变量)
    inotifywait -mrq -e create,delete,move,attrib,modify $DIR1 | while read x y z
    do
    $RCMD(这个变量相当于执行rsync -az --delete /opt /opt2/)
    done &

    实例:
    网站实时镜像
    实现主机svr —》主机pc的网站实时镜像
    双方的目录均为/var/www/html/
    以svr为同步发起方,配置inotfy+rsync同步
    以pc为同步目标,基于ssh验证(如果不想输密码,可以给对方公钥)
    rsync -az --delete /var/www/html/ root@174.16.16.120:/var/www/html/
    [root@svr ~]# vim /root/irsync.sh (要实时同步就修改脚本文件)
    #!/bin/bash
    DIR1="/var/www/html/"
    RCMD="rsync -az --delete $DIR1 root@174.16.16.120:$DIR1
    "
    inotifywait -mrq -e create,delete,move,attrib,modify $DIR1 | while read x y z
    do
    $RCMD
    done &

    ————————————————————————————————————————————

  • 相关阅读:
    阿里云ecs服务器wamp内网可以访问,外网ip、域名无法访问
    python- 粘包 struct,socketserver
    python-网络编程
    python-模块-包
    python- 异常
    python-模块 time, os, sys
    python_模块 collections,random
    python_模块 hashlib ,configparser, logging
    python_ 模块 json pickle shelve
    python-面向对象中的特殊方法 ,反射,与单例模式
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7219959.html
Copyright © 2011-2022 走看看