zoukankan      html  css  js  c++  java
  • 综合架构_Rsync备份服务

    搭建备份服务意义:

      保证数据不会丢失

      便于数据进行恢复

      便于进行数据对比

    备份服务实现:

      利用rsync软件实现数据统一存储备份
      rsync --- a fast, versatile, remote (and local) file-copying tool
      快速, 多功能, 远程(和本地)文件复制
      可以实现数据全量或者增量备份:
      A主机(5G) -5G-> backup(5G) --- 全量备份
      A主机(5G+10G) -15G-> backup(5G+10G) --- 全量备份 备份数据效率比较低
      A主机(5G+10G) -10G-> backup(5G+10G) --- 增量备份 备份数据效率更高

    增量备份算法:
      01. 对比文件属性信息 *

      
      02. 验证文件指纹信息

    备份服务应用过程:

    1.Local:本地进行数据备份 ==cp

    本地备份文件:
    cp 源文件  目标路径
    cp /etc/hosts /tmp/
    rsync /etc/hosts /tmp/
        
    本地备份目录:
    cp -a /oldboy  /tmp/
    rsync -a /oldboy  /tmp/

    2.Access via remote shell: 远程方式进行数据备份

    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

    在backup服务器上操作:
    	拉取文件信息:
    	rsync root@10.0.0.200:/etc/hosts  /backup
    	拉取目录信息:
    	rsync -r root@10.0.0.200:/oldboy  /backup
    
    在backup服务器上操作:
    	推送文件信息:
    	rsync /etc/hosts root@10.0.0.200:/backup
         rsync -avz /etc/hosts  rsync://rsync_backup@172.16.1.41:873/db_dir 推送目录信息: rsync -r /oldboy root@10.0.0.200:/backup 异常问题: 拉取或者推送目录信息 目录信息后面有/ /oldboy/ 表示将目录下面的内容进行远程拉取或者推送 目录信息后面没有/ /oldboy 表示将目录本身以及目录下面的内容进行远程拉取或者推送

     Access via rsync daemon: 守护进程方式进行远程备份 

    特点:

      1.免交互传输备份数据

      2.进行远程传输验证

        a.基于认证用户用户信息

        b.基于地址进行验证

      3.传输数据时进行管理控制

    命令参数:

    -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)	   
    		                        归档模式; 等于 使用了 -rlptgoD参数
    	-r, --recursive             recurse into directories
    	                            传输目录信息, 进行递归传输备份
    	-l, --links                 copy symlinks as symlinks    (鸡肋)
    	                            可以将链接文件进行传输备份
           -L, --copy-links ***        transform symlink into referent file/dir
    	                            将链接文件备份, 并且将链接文件所指向的源文件数据也进行备份
    	-p, --perms                 preserve permissions
                                    保持文件的权限不变	644 --- 644
    	-o, --owner                 preserve owner (super-user only)
    	                            保持用户属主信息不变(超级用户)
    	-g. --group                 preserve group
    	                            保持用户属组信息不变
    	-t, --times                 preserve modification times
                                    保持文件修改时间不变
    	-D							preserve device files (super-user only)
    	                            可以传输设备文件信息
    	-P(大写)                    显示数据传输进度信息
    	-v                          显示传输过程信息
    	-z                          传输数据信息时,是否将数据进行压缩传输
    	--delete                    无差异同步数据信息 (慎用)
    	                            A主机(操作) 拥有的数据   backup 也必须有相同的数据
    				  A主机(操作) 没有的数据   backup 有的数据必须删除
    

      

       远程主机Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

            rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        客户端推送备份文件信息      
        rsync -avz /etc/hosts  rsync_backup@172.16.1.41::backup
        客户端推送备份目录信息
        rsync -avz /oldboy/  rsync_backup@172.16.1.41::backup
              
    		  
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
    备份服务安装部署:


    服务端部署: 第一个历程: 安装软件程序 yum install -y rsync 第二个历程: 编写服务配置文件
    vim /etc/rsyncd.conf 
    uid = rsync                     --- 指定备份目录属主信息  
    gid = rsync                     --- 指定备份目录属组信息  
    port = 873                      --- 定义服务端口号   
    fake super = yes                --- 将虚拟用户(rsync)伪装成管理员 (直接接收文件的完整属性)
    use chroot = no                 --- 安全有关参数(禁锢推送的数据至某个目录,不允许跳出该目录)
    max connections = 200           --- 最大连接数
    timeout = 300                   --- 设置连接超时时间,链路上多久没有数据传输, 就会强制断开连接
    pid file = /var/run/rsyncd.pid  --- 表示服务处于运行状态 | 根据文件中号码杀死进程
    lock file = /var/run/rsync.lock --- 结合max connections控制最大的连接数
    log file = /var/log/rsyncd.log  --- 排查异常错误信息
    ignore errors                   --- 忽略简单错误信息, 保证传输效率
    read only = false               --- 备份目录需要具有可读可写权限
    list = false                    --- 不允许查看模块信息
    hosts allow = 172.16.1.0/24     --- 白名单信息  允许备份数据主机信息或者网段信息
    hosts deny = 0.0.0.0/32         --- 黑名单信息  阻止备份数据主机信息或者网段信息
    auth users = rsync_backup       --- 认证用户
    secrets file = /etc/rsync.password  --- 认证用户密码文件
    [backup]                        --- 模块信息(每一个模块表示一个备份目录)
    comment = "backup dir by oldboy"--- 注释说明
    path = /backup                  --- 备份目录

    第三个历程: 创建用户信息(虚拟用户)

    useradd -M -s /sbin/nologin rsync

    第四个历程: 创建密码文件

    echo "rsync_backup:oldboy123" >/etc/rsync.password
    chmod 600 /etc/rsync.password

    第五个历程: 创建备份数据目录

    mkdir /backup
    chown -R rsync.rsync /backup/

    第六个历程: 启动服务程序

    systemctl start rsyncd
    systemctl enable rsyncd

    第7个历程:检查rsync 873端口是否处于监听状态

    [root@backup ~]# netstat -lntup|grep 873
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      15180/rsync         
    tcp6       0      0 :::873                  :::*                    LISTEN      15180/rsync

    客户端部署:

    方式一:

    第一个历程: 进行备份数据测试

    yum install -y rsync

    rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

    第二个历程: 实现免交互备份数据

    echo oldboy123 >/etc/rsync.password chmod 600 /etc/rsync.password rsync -avz /oldboy/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

    方式二:

    export RSYNC_PASSWORD=******

    rsyncs守护进程数据备份原理:  

    1.执行传输命令,建立网络连接
    
    2.进行用户认证过程 用户名rsync_backup 密码 ******
    
    3.用户身份转换    任意用户 -----> rsync
    
     确保备份目录属主和属组     rsync
    
    4.文件保存到备份目录中     利用rsync用户将文件属性和属主进行修改
    
     文件属主和属组变为rsync 将rsync伪装成一个超级管理员 fack super 

    备份服务企业应用 

    1)  配置多模块功能 

    
     第一个历程: 配置文件中编写多个模块
          [dev_dir]
           comment = "backup dir by dev"
           path = /dev_dir
           [sa_dir]
           comment = "backup dir by sa"
           path = /sa_dir
           [db_dir]
           comment = "backup dir by dba"
           path = /db_dir
     第二个历程: 创建备份目录并授权
    	mkdir -p /{dev_dir,sa_dir,db_dir}
    	chown rsync.rsync /{dev_dir,sa_dir,db_dir}    
    

     

    2)创建备份目录子目录信息 

    rsync -avz /var/log/secure rsync_backup@172.16.1.41::sa_dir/log/ --password-file=/etc/rsync.password
    说明: 不能创建多级子目录
    	   
    采用远程模式创建多级子目录:
    rsync -avz --rsync-path="mkdir -p /sa_dir/01/02/03/ && rsync"  /etc/hosts   root@172.16.1.41:/sa_dir/01/02/03/
    http://www.schwertly.com/2013/07/forcing-rsync-to-create-a-remote-path-using-rsync-path/

    rsync -avz --relative /02/03/04/ /etc/hosts root@172.16.1.41:/sa_dir/01/

    3)同步备份数据排除功能

     --exclude       --- 排除少量文件或目录信息
    --exclude-from --- 排除大量文件或目录信息

        [root@localhost oldboy]# tree . ├── oldboy01 │   ├── a.txt │   ├── b.txt │   └── c.txt ├── oldboy02 │   ├── a.txt │   ├── b.txt │   └── c.txt └── oldboy03 ├── a.txt ├── b.txt └── c.txt 需求01: 除了oldboy01/a.txt oldboy03目录不做备份 rsync -avz /oldboy/ --exclude=oldboy01/a.txt --exclude=oldboy03/ rsync_backup@172.16.1.41::sa_dir --password-file=/etc/rsync.password
    说明: --exclude后面需要写上相对路径信息, 相对路径是相对于同步目录而言 需求02: 除了oldboy01/a.txt oldboy02/b.txt oldboy03/c.txt文件不做备份
    编写一个排除数据信息文件
    vim paichu.txt oldboy01/a.txt oldboy02/b.txt oldboy03/c.txt rsync -avz /oldboy/ --exclude-from=/oldboy/paichu.txt rsync_backup@172.16.1.41::sa_dir --password-file=/etc/rsync.password

    4)备份服务访问控制功能  

    hosts allow ---> 白名单

    hosts deny ---->黑名单

     需求:
    	   01. 将数据备份 dev_dir目录时, 172网段和10网段都允许
    	       [dev_dir]
    	       hosts allow = 172.16.1.0/24,10.0.0.0/24
    	   02. 将数据备份 sa_dir目录时,  允许172网段备份 禁止10网段备份
    	       [sa_dir]
    	       hosts allow = 172.16.1.0/24
    	   03. 将数据备份 db_dir目录时,  禁止172网段备份 允许10网段备份
    	       [db_dir]
               hosts deny = 172.16.1.0/24
    

       

    rsync配置文件中:
    全局配置: 模块之上的配置信息
    局部配置: 模块之中的配置信息
    结论: 局部配置优先于全局配置
        [dev_dir]
           comment = "backup dir by dev"
           hosts allow = 172.16.1.0/24,10.0.0.0/24
           path = /dev_dir
           [sa_dir]
           comment = "backup dir by sa"
           hosts allow = 172.16.1.0/24
           path = /sa_dir
           [db_dir]
           comment = "backup dir by dba"
           hosts deny = 172.16.1.0/24
           path = /db_dir
    

    5) 配置文件列表功能


       list = true    --- 在客户端可以显示服务端所有模块信息
                          rsync rsync_backup@172.16.1.41::
       list = false   --- 在客户端禁止显示服务端所有模块信息  

    思维导图  

     

  • 相关阅读:
    设计模式_EventObject和EventListener
    设计模式_Observable与Observer
    zooKeeper_《ZooKeeper官方指南》一致性保障
    thread_为什么多线程是个坏主意
    gtk+学习笔记(三)
    linux c下输入密码不回显
    浮点数在计算机内存中的存储方式
    gtk+学习笔记(二)
    linux下c图形化编程之gtk+2.0简单学习
    关于字符串排序合并的问题
  • 原文地址:https://www.cnblogs.com/zhanghongqi/p/11718203.html
Copyright © 2011-2022 走看看