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

  • 相关阅读:
    pat 甲级 1065. A+B and C (64bit) (20)
    pat 甲级 1064. Complete Binary Search Tree (30)
    pat 甲级 1010. Radix (25)
    pat 甲级 1009. Product of Polynomials (25)
    pat 甲级 1056. Mice and Rice (25)
    pat 甲级 1078. Hashing (25)
    pat 甲级 1080. Graduate Admission (30)
    pat 甲级 团体天梯 L3-004. 肿瘤诊断
    pat 甲级 1099. Build A Binary Search Tree (30)
    Codeforce 672B. Different is Good
  • 原文地址:https://www.cnblogs.com/bill2014/p/7398760.html
Copyright © 2011-2022 走看看