zoukankan      html  css  js  c++  java
  • rsync高级同步

    rsync是一款开源的、快速的、多功能的、可实现全量及增量本地或远程数据同步备份工具。适用于unix/linux/windows等多种操作系统平台。

    两台机器拷贝数据
    scp,nfs(linux之间),sftp,http,samba(linux与windows之间),rsync,drbd(基于文件系统同步)

    1、rsync特性:

      支持拷贝特殊文件如链接文件,设备等。
      可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
      可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。
      可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高,tar。
      可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)。
      可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
      支持匿名或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。

    2、工作场景:

      两个服务器之间的备份(定时备份)
      把所有客户服务器数据同步到备份服务器(定时备份)
      rsync结合inotify的功能做实时的数据同步 (实时备份)

    3、工作方式:

      单个主机本地之间的数据传输(此时类似于cp命令的功能) rsync -avz /etc/hosts .
      借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能) rsync -avz /etc/hosts -e 'ssh -p 52113' oldboy@10.1.1.1:~
      以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能)

    4、以守护进程方式传输

    ####服务端
    1、以守护进程的方式启动
    rsync --daemon
    
    2、创建共享目录,并授权
    mkdir -p /oldboy
    useradd rsync -s /sbin/nologin   系统的虚拟用户
    chown -R rsync.rsync oldboy
    
    3、导入用户和密码
    echo "rsync_backup:oldboy" >/etc/rsync.password     用户名:密码   rsync虚拟用户名:rsync虚拟用户密码
    chmod 600 /etc/rsyncd.password     为了安全,让别人看不到
    
    4、关闭防火墙和selinux
    
    #####客户端
    5、导入密码文件,只放密码不放用户名
    echo "oldboy" >/etc/rsync.password   
    chmod 600 /etc/rsync.password 
    
    6、备份
    rsync -avz rsync_backup@192.168.222.140::oldboy /data    此时没有使用密码文件
    					这个是模块名
    										  
     rsync -avz rsync_backup@192.168.222.140::oldboy /data --password-file=/etc/rsync.password   使用密码文件就可以不用输密码了
    

    rsyncd.conf

    ##rsyncd.conf start##
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    [oldboy]                   	类似于NFS的共享目录,这是一个模块,,,,SRC
    path = /oldboy/
    ignore errors
    read only = false
    list = false
    hosts allow = 192.168.222.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup      虚拟用户,不是系统用户
    secrets file = /etc/rsync.password     虚拟用户的对应密码文件
    #rsync_config_______________end
    

      

    ########################扩展

    排除单个文件,客户端
      rsync -avz --exclude=a /data/ rsync_backup@192.168.222.140::oldboy --password-file=/etc/rsync.password 推送文件,排除a
    排除多个文件
      rsync -avz --exclude={a,b} /data/ rsync_backup@192.168.222.140::oldboy --password-file=/etc/rsync.password 推送文件,排除a,b
      rsync -avz --exclude={a..g} /data/ rsync_backup@192.168.222.140::oldboy --password-file=/etc/rsync.password 排除a到g
    通过自己定义文件来排除
    [root@weiwei ~]# seq 10>paichu.log
    rsync -avz --exclude-from=paichu.log /data/ rsync_backup@192.168.222.140::oldboy --password-file=/etc/rsync.password 通过文件排除

    服务端也可以控制,但是不灵活,所以一般不要再服务端配
    在配置文件里面
    exclude=a b test/oldboy.txt

    #########################

    无差异同步,客户端
    --delete
    如果客户端没有数据,备份到服务器,服务器也丢了,客户端也没有,所以备份时,客户端与服务器必须一样,风险很大,如果操作不当会将备份服务器给全删了
    不管是服务端还是客户端如果要无差异同步,必须要两端一样
    推送:本地有啥,服务端有啥,本地没有的服务端有也要删除。rsync -avz --delete /data/ rsync_backup@192.168.222.140::oldboy --password-file=/etc/rsync.password
    拉取:远端有啥,客户端有啥,远端没有的本地有也要删除。rsync -avz --delete rsync_backup@192.168.222.140::oldboy /tmp --password-file=/etc/rsync.password

    一般是有需要两台服务器之间,必须要求数据一致,且实时性又不是很高的情况,如两台负载均衡下面web服务器之间的同步,或者高可用双击配置之间的同步等,rsync无差异同步非常的危险,如果生产环境没有特殊的需求,应避免使用

    ############################

    参考文档:
    http://rsync.samba.org/
    man rsync
    man rsyncd.conf
    http://www.samba.org/ftp/rsync/rsync.html
    http://www.samba.org/ftp/rsync/rsyncd.conf.html

  • 相关阅读:
    JS 数组及函数的应用
    JavaScript 基础知识点
    利用css布局效果图
    css 区块与盒子模型
    JS数组及函数的应用
    JavaScript基础
    近期总结12.30
    层叠样式与盒子模型
    PHP课后小结 2017.12.22
    PHP课后小结 12.20
  • 原文地址:https://www.cnblogs.com/bill2014/p/7398760.html
Copyright © 2011-2022 走看看