Linux下-部署Rsync服务

Rsync  简介;

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

并且可以不进行改变原有的数据属性信息,实现数据的备份和迁移的特性 ,Rsync 软件适用于 Linux/unix/windows  等多种操作系统上 。

Rsync备份服务知识点;

1,Rsync可以实现的备份方式 ;

  • 本地备份
  • 远程备份
  • 无差异备份
2,Rsync实现方式介绍 ;
  •  全量备份数据
  •  增量备份数据 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 全量  - 增量的区别                                                +
+          完整数据传送表示为 全量  ,  传送新增加的数据表示增量,    +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   实现rsync增量同步数据,是运用了其独特的“quick check”算法
    CentOS5,rsync2.x比对方法,把所有的文件比对一遍,然后进行同步。
    CentOS6,rysnc3.x比对方法,一边比对差异,一边对差异的部分进行同步。

3,Rsync 特性总结说明 ;

  •  01:支持多种类型文件拷贝
  •  02:支持文件复制排除功能
  •  03:支持文件复制属性不变
  •  04:支持文件复制增量同步
  •  05:支持文件复制隧道加密
  •  06:支持守护进程同步数据
  •  07:支持数据同步身份验证

1. 可以镜像保存整个目录树和文件系统;
2. 可以很容易做到保持原来文件的权限、时间、软硬链接等;
3. 无须特殊权限即可安装;
4. 优化的流程,文件传输效率高;
5. 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6. 支持匿名传输,以方便进行网站镜像。

 

4,Rsync复制原理说明  ;

      网站内部人员数据备份场景 

1,定时任务+rsync

    网站外部用户数据备份场景

       2,实时同步工具+rsync

5,Rsync工作方式,介绍  ;

       5.1  本地方式  、 隧道方式  、守护进程 ;
5.2 单个主机本地之间的数据传输(此时类似于cp命令的功能)。
5.3 借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)。
5.4 以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能)。

=======================开始部署===================================

[root@rsync ~]# rpm -qa | grep rsync                  #查看软件是否安装
rsync-3.0.6-12.el6.x86_64

[root@rsync ~]# 

[root@rsync ~]# rsync --version                           #查看版本信息 
rsync  version 3.0.6  protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes


rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

 配置rsync软件的配置文件

    cat >>/etc/rsyncd.conf<<EOF 
    #rsync_config
    #created by HQ at 2017
    ##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
    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
EOF


########################### 配置文件注释 #####################################
#rsync_config
#created by oldboy 15:00 2016-11-15
##rsyncd.conf start##
uid = rsync                          # 用户 远端的命令使用rsync访问共享目录
gid = rsync                          # 用户组                        
use chroot = no                      # 安全相关
max connections = 200                # 最大连接数
timeout = 300                        # 超时时间
pid file = /var/run/rsyncd.pid      # 进程对应的进程号文件
lock file = /var/run/rsyncd.lock    # 锁文件
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]                            # 模块名称
path = /backup                      # 服务端提供访问的目录
########################### 配置文件注释 #####################################

第一步  ; 创建备份存储的目录,和创建管理用户用户组 

[root@rsync ~]# mkdir -p backup                 #创建目录
[root@rsync ~]# ls
backup  install.log  install.log.syslog  optimize-init_sys.sh  sysctl.conf
[root@rsync ~]# useradd rsync -s /sbin/nologin -M        #创建rsync备份目录的管理用户与用户组
[root@rsync ~]# chown -R rsync.rsync backup/                #授权
[root@rsync ~]# ll    
总用量 64
-rw-------. 1 root  root   1510 11月 18 2017 anaconda-ks.cfg
drwxr-xr-x. 2 rsync rsync  4096 6月  21 23:05 backup
-rw-r--r--. 1 root  root  30419 11月 18 2017 install.log
-rw-r--r--. 1 root  root   9371 11月 18 2017 install.log.syslog
-rwxr-xr-x. 1 root  root   4065 8月   5 2017 optimize-init_sys.sh
-rwxr-xr-x. 1 root  root   2184 8月   5 2017 sysctl.conf
[root@rsync ~]# 


第二步;创建服务端和客户端的身份认证文件

[root@rsync ~]# echo "rsync_backup:oldboy123" >/etc/rsync.password
[root@rsync ~]# chmod 600 /etc/rsync.password   #配置文件权限只允许 root 用户查看 
[root@rsync ~]# cat /etc/rsync.password
rsync_backup:oldboy123
[root@rsync ~]# 


第三步 ;启动 rsync 服务 

[root@rsync ~]# rsync --daemon                  #启动服务
[root@rsync ~]# netstat -lntup |grep rsync         #rsync   端口是 873 端口 
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      2425/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      2425/rsync          
[root@rsync ~]# 


CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件 在 /etc/xinetd.d/rsync。
要配置以 xinetd 运行的 rsync 服务需要执行如下的命令,也可以rsync --daemon 这样独立运行 。
# chkconfig rsync on
# service xinetd restart

======================= 客户端配置  ===============================

[root@localhost ~]# rpm -qa | grep rsync           #查看软件是否安装,如已安装则无需在进行安装 
rsync-3.0.9-18.el7.x86_64
[root@localhost ~]# echo "oldboy123" >/etc/rsync.password        #创建认证
[root@localhost ~]# cat /etc/rsync.password
oldboy123
[root@localhost ~]# 

[root@localhost ~]# rsync --daemon          #启动服务 
[root@localhost ~]# netstat -lntup |grep rsync       #查看是否监听端口 
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1397/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1397/rsync          
[root@localhost ~]# 

[root@rsync ~]# rsync -av /etc/hosts 172.16.1.8:/mnt/
[email protected]'s password: 
sending incremental file list
hosts

[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
hosts
[root@localhost mnt]# 


rsync 中的推和拉的概念 ;




#######################  rsync备份服务部署扩展功能  ############################
①. rsync服务端多模块功能配置
   
配置文件多模块信息
[root@rsync backup]# cat /etc/rsyncd.conf 
    #rsync_config
    #created by HQ at 2017
    ##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
    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
    [nfsbackup]                     #新增加的一个模块 
    comment = "nfsbackup dir by oldboy"
    path = /nfsbackup
    说明:01:修改配置文件信息,实现多模块功能后,需要重启rsync服务
      02:多模块信息配置好后,需要创建多模块指定备份目录
    
# 创建多模块目录
mkdir /nfsbackup
        mkdir /nfsbackup -p
        chown -R rsync.rsync /nfsbackup/
        ll -d /nfsbackup/

# 进行多模块目录测试

rsync -avz /etc/rc.local [email protected]::backup --password-file=/etc/rsync.password 

rsync -avz /etc/rc.local [email protected]::nfsbackup --password-file=/etc/rsync.password 

# 利用rsync客户端在备份目录中创建多级目录
①. 多级目录的表现格式为 backup/sa/   如果sa后面没有接/ 表示的是文件不是目录
②. rsync客户端创建目录,只能创建一级,不能创建多级目录

 # 利用rsync客户端同步数据(非常重要)
rsync -avz /tmp/ [email protected]::backup/ --password-file=/etc/rsync.password 
说明:/tmp/ 表示同步tmp目录下内容,但不包含目录本身
rsync -avz /tmp [email protected]::backup/ --password-file=/etc/rsync.password 
说明:/tmp 表示同步tmp目录下内容及目录本身


===============================================================

#rsync异常问题总结:


问题一:
[root@nfs tmp]# rsync -avz /etc/hosts [email protected]::backup
Password: 
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
问题原因:
①. 认证的用户名或者密码输入的不正确
②. 认证文件编写有问题(认证内容信息)
③. 认证文件的权限设置的不正确(权限为600,文件用户和用户组还是root不变)
④. rsync服务端配置文件中指定的认证文件路径与实际认证文件路径不符


问题二:
[root@nfs01~]#rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password
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 -avz /etc/sysconfig/network [email protected]::nfsbackup --password-file=/etc/rsync.password 
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
解决原因:
①. rsync服务端没有模块指定的目录,需要进行创建和授权


问题四:
[root@web01 ~]# rsync -avz /etc/rc.local [email protected]::backup/sa/ --password-file=/etc/rsync.password 
sending incremental file list
rsync: mkdir "sa" (in backup) failed: File exists (17)
rsync error: error in file IO (code 11) at main.c(576) [receiver=3.0.6]
rsync: connection unexpectedly closed (5 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]

①. 传输的文件或目录与备份服务目录中文件名称相同,拒绝传输



==========================End===================================


猜你喜欢

转载自blog.csdn.net/sinat_41075146/article/details/80733419