Rsync数据复制软件应用实践

一、Rsync服务概念特性介绍

 1. Rsync介绍

    Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。rsync软件适用于unix/linux/windows等多种操作系统平台。

    Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制或远程守护进程方式复制。它提供了大量参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。减少通过网络数据发送数量,利用只发送源文件和目标文件之间的差异信息,从而实现数据的增量同步复制。

 

 2. Rsync服务命令在应用时,属于一个非常强大的命令,可以通过rsync一个命令替换下面4个命令的操作:

  1)实现本地数据同步复制(等价命令cp)

  2)实现远程数据同步复制(等价命令scp)

  3)实现数据信息删除功能(等价命令rm)

  4)实现数据信息查看功能(等价命令ls)

 3. rsync服务命令简单应用(1v4的应用效果)

    1) rsync == cp 

 

 

    2) rsync == scp  

   说明:同步数据时,/tmp/目录后有/信息,表示将目录下面的数据内容进行备份同步
          同步数据时,/tmp目录后没有/信息,表示将目录及目录下面的数据内容进行备份同步

 

 

 

 

 

 

    3) rsync == rm

    说明:rsync实现删除目录中数据内容过程,就将一个空目录和一个有数据的目录进行同步,最终会将有数据的目录中的文件进行清空

 

    4)rsync == ls

 

4. Rsync备份软件7大特性总结:
   1).支持拷贝普通文件与特殊文件如链接文件,设备等
   2).支持排除指定文件或目录同步的功能,类似tar命令排除功能
   3).支持保持原文件或目录的所有属性信息不变
   4).支持增量同步,既只同步变化数据,提升数据传输效率
   5).支持使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件
   6).支持使用通过socket(守护进程方式)传输文件或目录数据信息
   7).支持用户认证方式传输数据,提升数据同步安全性

 5. Rsync软件复制原理

     在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据,即采用增量复制方法对数据信息进行同步,与传统cp,scp拷贝工具的全量拷贝复制截然不同,增量同步复制数据,在效率上远远高于全量复制。

 

二、数据传输rsync命令参数说明

 

 

三、Rsync服务工作方式介绍

 Rsync有3种传输数据模式:

 1. 本地数据传输模式

     类似于cp本地复制命令,可以实现文件、目录的移动备份等功能,所不同的是Rsync有增量复制功能

     本地模式命令语法格式说明:

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

     rsync --- 数据备份传输命令
     option --- 可以输入一下和rsync传输数据有关的参数
     src --- 要进行备份的数据(文件/目录)
     dest --- 将数据信息备份到什么位置(相应路径中)

     注:复制目录需要添加-r参数

  

 2. 远程shell数据传输模式

    一般是借助通道(如SSH)在两台服务器之间进行复制数据,这两台服务器之间是对等的,没有客户端和服务端之分,整个过程类似于scp复制命令,所不同的是Rsync有增量复制功能,但缺少scp的加密复制功能。

    远程shell数据传输模式分为拉取和推送两种模式,拉取是指从远端服务器把数据拉取到本地服务器;推送是指把数据从本地服务器推送到远端服务器。

    拉取(pull)

    rsync option [USER@]HOST:SRC  DEST

   推送(push)

   rsync option SRC [USER@]HOST:DEST

 

 如:近端服务器ip:172.16.1.200,远端服务器ip:172.16.1.41

 

 

 3. 守护进程传输模式

   守护进程传输模式是在客户端与服务端之间进行数据复制的,通常需要服务端部署守护进程服务,然后在客户端执行命令,实现数据的拉取和推送复制。

   1)  守护进程传输模式语法:

   拉取语法格式:

   rsync [option] [USER@]HOST::SRC  DEST   

   [USER@]HOST:: ------指定远程连接的认证用户

   SRC ------- 指定相应的模块信息

   [DEST] ----- 将远程数据保存到本地的路径信息

   推送语法格式:

   rsync [option] SRC [USER@]HOST::DEST

   SRC ------ 指定本地要进行推送的数据信息

   [USER@]HOST:: ------ 指定远程连接的认证用户

   [DEST] ----- 远程进行保存数据的模块信息

   2)Rsync守护进程模式部署

   采用守护进程传输模式进行实际复制传输数据,必须额外部署Rsync Daemon 服务。 

 

(1)Rsync服务端部署流程

  第一步:确认软件是否安装,若未安装进行软件安装

 

  第二步:进行软件服务配置文件编写

  vim /etc/rsyncd.conf

  

  第三步:创建备份目录管理用户

 

  第四步:创建备份目录,并进行授权

 

  第五步:创建认证用户授权密码文件,并对密码文件进行授权

 

  第六步:启动程序服务

 

 

(2)Rsync服务配置文件参数详细说明

(3)Rsync客户端部署流程

  第一步:确认软件是否安装,若未安装进行软件安装

 

  第二步:创建认证用户授权密码文件,并对密码文件进行授权

 

  第三步:进行数据备份传输测试

 

 

四、Rsync服务常见错误分析

       排错必备思想:查看日志文件 more /var/log/rsyncd.log

1. Rsync服务端排错思路:    

    1)查看rsync服务配置文件路径是否正确 /etc/rsyncd.conf

    2)查看配置文件例的host allow,host deny,允许的ip网段是否是允许客户端访问的ip网段

    3)查看配置文件中path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UUID参数对应的属主和组)

    4)查看rsync服务是否启动,端口是否存在 ps -ef netstat -lntup

    5)查看iptables防火墙和SELinux是否开启允许rsync服务通过,也可以关闭

    6)查看服务端rsync配置文件里的密码权限是否为600 密码文件格式是否正确,正确格式(用户名:密码)文件路径和配置文件里的secrect files 参数对应

    7)如果是推送数据,要查看,配置rsyncd.conf 文件中用户是否对模块下目录有可读的权限     

2. Rsync客户端排错思路: 

    1)查看客户端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,注意:仅需要有密码,并且和服务端的密码一致

    2)用telnet链接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡telnet172.16.1.41 873)

    3)客户端执行命令时,语法格式书写不正确。若客户端执行命令是 rsync -avzP rsync_backup@172.16.1.41::backup/test/test/ --password-file=/etc/rsync.password 此命令要记清楚尤其172.16.1.41::backup/test/处的双引号及随后的backup为模块名称。

3. 常见报错:

  1)客户端报错:No route to host

       错误代码:

       rsync: failed to connect to 172.16.1.41: No route to host (113)
       rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

       解决办法:

       原因:可能被防火墙阻挡了

       解决:关闭rsync服务端的防火墙服务

   2)rsync客户端执行rsync命令错误

      错误代码:      

      ERROR: The remote path must start with a module name not a /
      rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

      解决办法:

      原因:rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)

      解决:执行正确的rsync命令:rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

   3)rsync服务认证用户失败

       错误代码:    

       @ERROR: auth failed on module backup
       rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

      排查思路:    

      a. 密码真的输入错误,用户名真的错误

      b. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致

      c. /etc/rsync.password文件权限不是600

      d. rsync_backup:123456密码配置文件后面注意不要有空格

      e. rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称

  4)rsync服务位置模块错误

      错误代码:     

     @ERROR: Unknown module 'backup'
      rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

     排查解决思路:

     检查/etc/rsyncd.conf配置文件模块名称书写是否错误

  5)rsync服务权限阻止问题

     错误代码:

     rsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13)
     sent 196 bytes received 27 bytes 63.71 bytes/sec
     total size is 349 speedup is 1.57
     rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

     排查解决办法:

     a.备份目录的属主和属组不正确,不是rsync

     b.备份目录的权限不正确,不是755

     c. CentOS 7服务端配置文件按CentOS 6的配置文件配置报错。(解决办法:CentOS7服务端/etc/rsyncd.conf中添加fake super = yes参数,CentOS 6不用)

  6)rsync服务备份目录异常

    错误代码:    

   @ERROR: chdir failed
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   定位原因:

   a. 备份存储目录没有建立

   b. 建立的备份存储目录和配置文件定义不一致

   解决办法:

   创建备份存储目录,并对其进行授权即可

 7)rsync服务无效用户信息

   错误代码:  

   @ERROR: invalid uid rsync
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   定位原因:

   rsync服务对应rsync虚拟用户不存在了

 8)客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码

    错误代码:  

   password file must not be other-accessible
   continuing without password file
   Password:

   定位原因:

   rsync客户端的秘钥文件也必须是600权限

 9)rsync客户端连接慢问题

   错误日志: 

   2017/03/08 20:14:43 [3422] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
   2017/03/08 20:14:43 [3422] name lookup failed for 172.16.1.41: Name or service not known
   2017/03/08 20:14:43 [3422] connect from UNKNOWN (172.16.1.41)
   2017/03/08 20:14:43 [3422] rsync to backup/ from rsync_backup@unknown (172.16.1.41)
   2017/03/08 20:14:43 [3422] receiving file list
   2017/03/08 20:14:43 [3422] sent 76 bytes received 83 bytes total size 349

   定位思路:

   查看日志进行分析,编写rsync服务端hosts解析文件

10)rsync服务没有正确启动

   错误代码:  

   rsync: failed to connect to 172.16.1.41: Connection refused (111)
   rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

   定位解决办法:

   查看rsync服务是否开启

五、Rsync服务扩展应用实践

1. 守护进程多模块功能配置

    第一步:修改rsyncd.conf配置实现多模块配置

 

  第二步:建立目录并授权

 

  第三步:重启rsync服务(只要修改配置文件,就必须重新加载服务)

 

  第四步:客户端访问测试

 

  第五步:服务端查看

 
2. 守护进程的排除功能实践

 第一步、准备工作(在服务端上操作)

 

 第二步、方法一:在客户端加命令行实现(同步数据,排除a、c目录(包括内部文件)及b目录下的2文件,其他同步)

               方法二:使用--exclude-from=file实现

               方法三:在服务端配置rsyncd.conf参数实现(注:排除的文件、目录之间用空格隔开,所有的目录及文件为相对于模块目录,不推荐使用)

  第三步、在客户端查看同步的数据

  

     

3. 守护进程来创建备份目录

 

 
 4. 守护进程的访问控制配置

      三种情况:
      1). 只有白名单,白名单网段或主机信息允许。其余阻止
      2). 只有黑名单,黑名单网段或主机信息阻止,其余允许
      3). 有黑名单也要白名单,白名单网段或主机信息允许,黑名单网段或主机信息阻止,其余允许
      建议只选择前两种方式配置,即仅采用一种安全策略进行配置,不要白名单和黑名单两个参数同时设置。

 

 

 

 5. 守护进程无差异同步配置

   要实现这种同步方式就要使用Rsync的--delete参数。所谓无差异复制,就是不管是拉取还是推送,都要保持两边的数据完全一致。

   这个命令非常危险,使用不当就会造成本地目录及文件,甚至是根目录数据丢失。

   说明:一定要谨慎使用,否则可能会清空备份目录

 

   
 6. 守护进程的列表功能配置

     list = false

     说明:表示是否列表显示rsync服务端所有模块信息

     在/etc/rsyncd.conf配置文件中,将list = false修改为list = true后,重启rsync服务,在客户端即可查看到服务端的模块列表

 

六、Rsync备份服务知识点总结

 

 

七、Rsync企业级全网备份项目案例实践

1、项目需求说明

     有一台NFS服务器,里面的数据很重要,要求把这些数据进行备份。每天晚上00点整在web服务器A上打包备份系统配置文件、网站程序目录及访问日志,并通过Rsync命令推送到服务器B上备份保留。

     具体备份要求:      

      1)所有服务器的备份目录必须都为/backup;

      2)NFS服务器站点目录假定为(/var/www/html);

      3)NFS服务器脚本目录假定为(/server/scripts);

      4)NFS服务器站点日志目录假定为(/app/logs);

      5)NFS服务器个人配置文件目录路径(/etc/rc.d/rc.local);

      6)NFS服务器定时任务文件路径为(/var/spool/cron/root);

      7)将以上文件或目录打包(2-6条所示)推送到备份服务器backup ;

      8)NFS服务器本地仅保留7天内的备份;

      9)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱;

      10)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。

2、项目实战部署

     1)服务器创建

          初始化2台服务器并将其作为全网备份方案测试服务器,2台服务器基本规划信息如下:

    

      2)服务器部署

         a. 搭建备份服务器

             rsync服务器搭建部署

             开发脚本实现校验、删除、报警

             配置实时任务每天6点实时执行

         b. NFS服务器搭建部署

             验证Rsync服务能否推送成功

             开发脚本实现打包备份、推送、校验、删除

             配置定时任务每天0点定时推送

        3) 实践步骤

        第一步:在BACKUP上部署Rsync服务,并在nfs01客户端上测试推送成功。

  

 

        第二步:客户端本地开发脚本

        NFS 服务器本地打包备份脚本实现

        待备份的信息:/var/www/html,/app/logs

                                /server/scripts,/etc/rc.d/rc.local,/var/spool/cron/root 

        编写脚本前,需要进行NFS目录与日志目录的创建,以及创建模拟数据

  

  

  

  测试备份脚本是否能正常运行

  

  在服务端是否有数据备份

  

        第三步:配置定时任务

        a. 在客户端编辑定时任务,实现每天00:00定时备份本地数据,并推送到备份服务器上

  

  

        b. 备份服务器上,也保留最近7天的所有备份数据,保留180天内每周六的所有数据副本。

  

        c. 在服务端配置定时任务,实现服务端数据的删除

  

        第四步:数据传输完整性验证与监控警告

        确保备份数据尽量完整准确,在备份服务器上对备份数据进行检查,把备份成功及失败的结果信息发送给系统管理员邮箱中。

        服务端针对客户端备份时的md5指纹数据,利用MD5命令进行验证,完成数据传输过程的完成性验证

        编写脚本完成

  

 注:

  • md5校验

         -c选项来对文件md5进行校验。校验时,根据已生成的md5来进行校验。生成当前文件的md5,并和之前已经生成的md5进行对比,如果一致,则返回OK,否则返回错误信息。

  运行脚本:bash  /server/scripts/send_mail.sh

  

 配置定时任务,每天检查备份结果,并将此结果发送至管理员邮箱

 

        第五步:配置mail使用外部SMTP发邮件

        修改配置文件/etc/mail.rc,在最后一行添加如下内容(如163的邮箱)

        set from=test@163.com smtp=smtp.163.com smtp-auth-user=test smtp-auth-password=xxxxxx smtp-auth=login

        各个参数的含义说明:

        from:服务器外发邮件的邮件地址,通过注册163邮箱获得

        smtp:发生的外部SMTP服务器的地址,需要使用相应的SMTP地址

        smtp-auth-user:外部SMTP服务器认证的用户名,注册时的用户名

        smtp-auth-password:外部SMTP服务器认证的用户密码(注意是授权码)

        smtp-auth:邮件认证的方式

        例如:配置信息如下

 

 

 

   表明邮件发送成功!!

posted @ 2020-05-09 17:32  出水芙蓉·薇薇  阅读(265)  评论(0编辑  收藏  举报