day 28 综合架构备份服务

1 rsync备份服务前言说明

  01 搭建备份服务作用

      1)数据备份的服务器

      2)进行日志统一保存

  02 搭建备份服务意义

      1)保证数据不会丢失

      2)便于数据进行恢复

      3)便于进行数据比对

  03 备份工作如何完成

      1)数据进行定时备份(crond定时任务)

      2)数据进行实时备份

  04 什么是rsync服务

      rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具

2 rsync备份服务概念介绍

  01 rsync命令使用介绍

    rsync命令是一个1v4的命令,一条命令可以干4条命令的事

    1)本地备份数据 cp

      本地备份数据  cp==rsync

      

     2)远程备份数据 scp

      scp命令用于不同主机之间的复制文按键,他采用ssh协议来保证复制的安全性.scp命令每次都是全量复制,因此效率不高,适合第一次复制时使用,增量复制建议使用rsync命令替代

      命令常用格式:

        推送(从本地服务器复制到远程服务器)文件或目录(推送push)

          scp -rp(人品) /文件 用户名@主机(地址):/要备份到的目录

        从远程服务器将数据复制到本地服务器(拉取pull)

          scp -rp 用户名@主机(地址):/要备份到的目录 /文件

        -C    压缩传输

        -l    指定传输占用带宽,单位Kbit/s

        -P    大写的P,指定传输的端口号 ******

        -p    小写的p,传输后保留文件原始属性  ******

        -q    不显示传输进度条

        -r    递归复制整个目录 ******

      远程备份数据  scp==rsync

      scp远程备份

      

       rsync远程备份(rsync的参数跟scp有一定差别)

      

         rsync远程备份时注意事项:备份目录后面有没有/

        备份目录后面没有 /      会将目录本身及下面的内容进行传输

        

         备份目录后面有 /      只将目录下面的内容进行备份传输.目录本身不会传输

        

         总结: 在使用rsync备份目录时:
            备份目录后面有  / -- /oldboy/ : 只将目录下面的内容进行备份传输
            备份目录后面没有/ -- /oldboy  : 会将目录本身以及下面的内容进行传输

    3)替换删除命令 rm

    

     企业应用:如何删除一个大的文件或者目录

      如上所述.对于一个大目录来说,利用rm 命令删除的时候,往往伴随效率低下,无法删除的问题,此时利用上面的命令可解决

       rsync -rpP -e "ssh -p 52113" --delete /null/ 172.16.1.41:/backup
        注意事项: 1. 首先需确认系统中有没有/null/  若有序确认是否是空目录  若没有则创建

               2.-e 参数适用于更改了ssh端口的情况,若没有更改此处无需加

             3.-P 此参数是用来观察传输过程的,特别是对于远程操作时,便于观察传输是否正常

    4)替代查看文件命令 ls

    

  02 rsync实现方式介绍

    1)全量备份数据

      

       全量备份:无论对端有没有数据,只要本地数据更新,就全部复制过去,效率低下,还占用带宽

    2)增量备份数据

      

       增量备份:传输前确认对端数据信息,对比信息,若本地新增数据而对端没有,则将新增的数据传送到对端

  03 rsync特性总结说明

    1) 支持多种类型文件拷贝

    2) 支持文件复制排除功能

      --exclude=    指定排除不需要传输的文件模式

      --exclude-from   从文文件读取需要排除的文件列表

    3) 支持文件复制属性不变

      -a        以递归方式传输文件,并保持所以文件的属性

    4) 支持文件复制增量同步

    5) 支持文件复制隧道加密

    6) 支持守护进程同步数据

    7) 主持数据同步身份验证

  04 rsync复制原理说明

3 rsync企业工作场景说明

  01 网站内部人员数据备份场景  定时任务+rsync

  02 网站外部人员数据备份场景  实时同步+rsync

4 rsync工作方式实践介绍

  01 rsync工作方式-本地方式

    rsync       [OPTION...]          SRC...           [DEST]

    rsync  选项(参数)              源文件            目标文件

  02 rsync工作方式-隧道方式(通过远程shell访问模式)

    1) 实现方式命令与语法

      推送(push):将本地要备份的数据推送到远端备份服务器指定目录进行传输

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

        rsync  选项(参数)   源文件(本地要备份的数据)   用户@主机(ip):要备份到的目录

      拉取(pull):将远端备份服务器中需要的数据拉取到本地指定的目录中

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

        rsync  选项(参数)    用户@主机(ip):要拉取的文件目录     拉取到本地存放目标目录

    2) 可实现传输隧道加密

    3) 推和拉工作原理说明

      

         将本地的数据传输到远端备份服务器上是推送过程

        将远端备份服务器上的数据下拉到本地目录中是拉取过程

  03 rsync工作方式-守护进程

    拉取(pull):

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

      rsync    选项(参数)      用户@主机(ip)::要拉取的文件          目标文件

      rsync   [OPTION...]   rsync://[USER@]HOST[:PORT]/SRC  [DEST]

      rsync    选项(参数)  rsync://用户@主机:端口/源文件                   目标文件

    推送(push):

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

      rsync    选项(参数)  要推送的文件    用户@主机(ip)::目标文件

      rsync   [OPTION...]     SRC    rsync://[USER@]HOST[:PORT]/DEST

      rsync    选项(参数)  要推送的文件  rsync://用户@主机(ip):端口/目标文件

5 rsync守护进程部署实践

  00 linux系统 安装部署服务流程

    1) 下载安装软件  yum

    2) 编写配置文件  

    3) 搭建服务环境  文件需要备份到的目录/目录权限

    4) 启动服务程序  开机自动启动/etc/rc.local

    5) 测试服务功能

  01 守护进程概念说明

  02 守护进程工作方式

  03 守护进程模式部署

    1) rsync守护进程服务端配置(备份服务器端)

      步骤一:查看软件是否存在-下载安装软件

        

       步骤二:编辑rsync软件配置文件

        vim/etc/rsyncd.conf  注意centos7自动生成此文件,centos6需要手动自己创建

        

         配置文件说明:

        uid=rsync    ---指定管理备份目录的用户(此处是虚拟用户rsync)

        gid=rsync    ---指定管理备份目录的用户组

        port=873     ---定义rsync备份服务的网络端口号

        fake super=yes   ---将rsync虚拟用户伪装成一个超级管理员用户

          作用解析:

          当我们执行备份服务命令是会出现以下报错

          

           查看报错得知当系统给hosts文件创建用户组的时候出现权限不足的问题,我们知道当hosts用户进入服务端的时候他的属主已经

          变为了rsync用户,而此用户要执行chgrp命令的时候明显不能执行,chgrp需要root用户执行,此时就需要用到配置文件中的fake super配置行了

          fake super 字面翻译是伪造的超级用户,查看配置文件

          

           发现此行被注释了,此行的含义就是让rsync伪装成root用户,取消注释,当rsync用户有了root用户的执行权限时,就不会出现上述报错

          

        use chroot=no  ---和安全相关的配置

        max connections=200  ---最大连接数同时只能有200个客户端连接到备份服务器

        timeout=300   ---超时时间(单位秒)

        pid file=/var/run/rsyncd.pid  ---记录进程号码信息 1.让程序快速停止进程 2.判断一个服务是否正在运行

          文件作用解析:开启rsync服务.查看服务状态,打开文件查看文件信息

          

           此时服务进程已经开启,利用netstat命令查看当前服务进程号和端口号,会发现rsync的进程号就是文件中的进程号,有些脚本文件调用服务进程号的时候会直接查询此文件

          

           总结文件作用:    1.让程序快速停止进程  kill `cat/var/run/rsyncd.pid`

                  2.判断一个服务是否正在运行  当服务停止时.找不到此文件

                  

        lock file = /var/run/rsync.lock  --- 锁文件

        log file = /var/log/rsyncd.log    --- rsync服务的日志文件 用于排错分析问题

        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    ---模块中配置参数 指定备份目录

      步骤三:创建rsync服务的虚拟用户

        useradd rsync -M(不创建家目录) -s /sbin/nologin虚拟用户的shell名称

        

         此处注意事项:当我们创建用户的时候,系统提示无法打开passwd文件,此时我们查看passwd文件和useradd的绝对路径文件发现没有权限都是正常的,没有权限阻止问题,

        查看别名设置也没有找到相关useradd的设置,上网查证问题所在,突然想到此前设置扩展属性的时候对passwd进行了锁止操作,查看文件属性,果然发现   i    ,设置了  i   导致root用户也无法对文件进行修改

        将文件的扩展属性取消,再添加用户,用户添加成功

      步骤四:创建备份服务认证密码文件

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

        

         密码文件是明文的,需要修改其权限只让属主能看和修改此文件

      步骤五:创建备份目录并修改属主属组信息

        

         创建/backup备份目录  使其属主和属组都为rsync用户

      步骤六:启动备份服务

      

    2) rsync守护进程客户端配置(要备份数据的服务器)

      步骤一:查看rsync软件是否存在  rpm -qa rsync  yum install -y rsync

      步骤二:创建一个密码文件

        echo "oldboy123" > /etc/rsync.password

        

      步骤三:免交互传输数据测试

        需要熟悉rsync守护进程名称语法:
            客户端做拉的操作: 恢复数据
              Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
            客户端做退的操作: 备份数据
              Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
                    src: 要推送备份数据信息
                    [USER@]: 指定认证用户信息
                    HOST: 指定远程主机的IP地址或者主机名称
                    ::DEST: 备份服务器的模块信息

        rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

        免交互方式常用来做定时任务时使用

  04 守护进程模式测试

    

  05 守护进程模式原理

    

     1   2  : 当客户端执行命令的时候,此时连接到服务端,服务端会查询配置文件/etc/rsyncd.co查看认证用户

     3     :客户端发送过来认证用户是rsync_backup,服务端查看配置文件也是,则认证用户通过,若两边认证用户不一致则会出现如下错误

        

    4   5 :认证用户确认后会再次确认密码信息,服务端查看文件/etc/rsync.password 以客户端的密码进行比较,比较通过后进行下一步

    6      7 : 客户端发送过来的文件是以root用户发送的,此时服务端要将文件属主属组信息转换为rsync虚拟用户信息

        

     7~     :将数据以rsync用户身份写入配置文件中的备份目录中,若此时服务端没有备份目录则会出现下属错误

        

     8~     : 一切正常时命令执行通过,文件完成备份注意:在服务端创建目录的时候一点要将/backup目录的属主属组信息变为rsync不然会出现下属错误

        

6 rsync命令参数详细说明

  -v  --verbose(信息)  显示详细的传输信息

  -z  --compress(yasuo)  传输时进行压缩以提高传输速率

  -a  --archive(归档)  命令的归档参数 包含:rtopgDl

  -r   --recursive(递归)  递归参数

  -t   --time      保持文件属性时间信息不变(修改时间)

  -o  --owner      保持文件属主信息不变

  -g  --group      保持文件属组信息不变

    ps:如何让-o和-g参数生效

    修改服务端的配置文件,将uid和gid改为源文件的属主属组,再关闭超级用户的权限即可

    

     

  -p  --perms      保持文件权限信息不变

  -D           保持设备文件信息不变

  -l  --links        保持链接文件属性不变

  -L           保持链接文件数据信息不变

  -P           显示数据传输的进度信息

    

  -e  "ssh -p 52113"  指定使用的信道协议及端口

  --exclude=PATTERN(式)  排除指定数据不被传输

  --exclude-from=file    排除指定数据不被传输(批量传输)

  --bwlimit=RATE      显示传输的速率  100Mb /  8   =12.5MB

  --delete        无差异同步参数

7 rsync守护进程扩展实践

  01 守护进程多模块功能配置

    在企业中可能会有多个部门多个数据信息需要进行备份,为了使各部门数据不会混在一起,系统提供了多模块功能设计

      例: 企业中有如下部门

        sa  sa_data.txt

        devdate  dev_date.txt

        dba  dba_date.txt      各部门需要将数据备份到不同的目录中

      在服务端rsync配置文件中进行配置:添加备份目录模块信息

      

       创建目录,修改属主属组信息

      

       在客户端上传数据,将不同的数据传输到不同的目录中

      

       查看数据传输情况

      

  02 守护进程的排除功能实践

    准备环境

    

     需求01: 将/oldboy目录下面 a目录数据全部备份 b目录不要备份1.txt文件 c整个目录不要做备份

      利用--exclude=PATERN

      绝对路径方式:排除的文件路径是绝对路径

      

       

       相对路径方式:排除的文件路径是相对路径

      

       

       总结:由于7对系统的优化,绝对路径和相对路径都可以实现备份数据

    需求02: 将/oldboy目录下面 a目录数据全部备份 b目录不要备份1.txt文件 c整个目录1.txt 3.txt文件不要备份

      利用--exclude-from=file  --批量删除(对于批量排除来说,我们需要将多个文件整理成一个文件,再将整理好的文件排除即可)

      步骤一:编辑一个排除文件(排除的时候需要将文件本身也加进去)

      

       步骤二:实现批量排除

      

       

  03 守护进程来创建备份目录

    由于客户端较多,当相同的数据如/etc/hosts都要备份到服务端上同一个/backup时,此时会出现问题,由于rsync是增量备份,对于相同    的文件来说不重新备份,也就是只能备份一个hosts文件,此时需要在/backup下创建关于客户端的下级目录,系统提供在客户        端自己创建下级目录,不用到服务端创建

    创建下级目录:

    

     

     注意::无法创建多级目录

    

  04 守护进程的访问控制配置

    守护进程白名单和黑名单功能

    第一种情况:只有允许的白名单,没有禁止的黑名单

    

     

     只允许白名单的流量通过,不允许其他流量通过

    第二种情况:没有允许的白名单,只有禁止的黑名单

    

     

     只有禁止的流量无法通过,其他正常通过

     第三种情况:既有允许的白名单.又有禁止的黑名单

    

     

     允许的流量通过,禁止的流量不能通过

     特殊情况:即允许又禁止

    

     

     即允许又禁止的情况下,白名单的配置优先于黑名单

    正常情况:白名单没有,黑名单也没有

    

     

     对于既不在白名单也不在黑名单的流量是允许通过的  

  05 守护进程的列表功能配置

    有些时候当客户端要往服务端备份数据的时候,不清楚自己要备份的目录是哪个,可以利用命令查询目录模块列表信息

    

     

     利用命令可查看到目录列表信息,但由于此设置伴随安全风险问题.所以建议还是关闭列表功能

原文地址:https://www.cnblogs.com/zp751060301/p/13259945.html