zoukankan      html  css  js  c++  java
  • 二.Rsync备份服务

    自己动手部署一遍

    期中架构-第二章-备份服务笔记
    ======================================================================

    01. 课程回顾
    根据思维导图回顾了上节课内容

    02. rsync服务介绍
    属于一款实现全量及增量复制同步的软件工具

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

    ①. rsync == cp

    [root@backup ~]# # rsync == cp效果
    [root@backup ~]# cp -a /etc/hosts /tmp/
    [root@backup ~]# ll /tmp/
    total 4
    -rw-r--r--. 1 root root 352 Jan 27 01:15 hosts
    [root@backup ~]# rsync -a /etc/sysconfig/network /tmp/
    [root@backup ~]# ll /tmp/
    total 8
    -rw-r--r--. 1 root root 352 Jan 27 01:15 hosts
    -rw-r--r-- 1 root root 31 Jan 26 18:16 network

    ②. rsync == scp
    [root@backup ~]# scp -rp /tmp/ 172.16.1.31:/tmp/
    The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
    RSA key fingerprint is 5b:9b:e6:79:a9:95:4f:be:06:41:e3:bb:7a:12:ee:b4.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '172.16.1.31' (RSA) to the list of known hosts.
    root@172.16.1.31's password:
    network 100% 31 0.0KB/s 00:00
    hosts 100% 352 0.3KB/s 00:00
    [root@backup ~]# ll /tmp/
    total 8
    -rw-r--r--. 1 root root 352 Jan 27 01:15 hosts
    -rw-r--r-- 1 root root 31 Jan 26 18:16 network
    [root@backup ~]# rsync -rp /tmp/ 172.16.1.31:/tmp/
    root@172.16.1.31's password:
    [root@backup ~]#
    说明:同步数据时,/tmp/目录后有/信息,表示将目录下面的数据内容进行备份同步
    同步数据时,/tmp目录后没有/信息,表示将目录及目录下面的数据内容进行备份同步

    ③ rsync == rm
    说明:rsync实现删除目录中数据内容过程,就将一个空目录和一个有数据的目录进行同步
    最终,会将有数据的目录中的文件进行清空
    [root@backup ~]# mkdir /null
    [root@backup ~]# rsync --delete /null/ /tmp/
    rsync: --delete does not work without -r or -d.
    rsync error: syntax or usage error (code 1) at main.c(1422) [client=3.0.6]
    [root@backup ~]#
    [root@backup ~]# rsync -r --delete /null/ /tmp/
    [root@backup ~]# ll /tmp/
    total 0

    ④ rsync == ls
    [root@backup ~]# ls /etc/hosts
    /etc/hosts
    [root@backup ~]# ls -l /etc/hosts
    -rw-r--r--. 2 root root 352 Jan 27 01:15 /etc/hosts
    [root@backup ~]# rsync /etc/hosts
    -rw-r--r-- 352 2018/01/27 01:15:59 hosts

    04 rsync软件工作方式
    ①. 本地数据备份方式

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

    实践练习:
    [root@backup ~]# rsync -a /etc/hosts /tmp/ok.txt
    [root@backup ~]# ll /tmp/ok.txt
    -rw-r--r-- 1 root root 352 Jan 27 01:15 /tmp/ok.txt

    ②. 远程数据备份方式

    Access via remote shell:
    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

    pull方式语法说明:
    rsync --- 数据备份传输命令
    option --- 可以输入一下和rsync传输数据有关的参数
    [USER@]HOST: --- 需要指定以什么用户身份登录到远程主机,
    如果省略USER信息,表示以当前用户身份进行登录
    登录主机地址或域名信息
    SRC --- 指定远程主机要传输过来到本地的数据信息
    dest --- 将数据保存到本地的什么路径中

    push方式语法说明:
    rsync --- 数据备份传输命令
    option --- 可以输入一下和rsync传输数据有关的参数
    [USER@]HOST: --- 需要指定以什么用户身份登录到远程主机,
    如果省略USER信息,表示以当前用户身份进行登录
    登录主机地址或域名信息
    SRC --- 指定本地主机要传输到远程主机的数据
    dest --- 将本地数据保存到远端的什么路径中

    ③. 守护进程传输模式
    Access via rsync daemon:
    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
            rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    pull:rsync [OPTION...] [USER@]HOST::SRC... [DEST]
              [USER@]HOST:: --- 指定远程连接的认证用户
              SRC --- 指定相应的模块信息
              [DEST] --- 将远程数据保存到本地的路径信息

    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               [USER@]HOST:: --- 指定远程连接的认证用户
               SRC --- 指定本地要进行推送的数据信息
               [DEST] --- 远程进行保存数据的模块信息

    05 rsync守护进程部署流程
    1)服务端部署流程

    第一里程:检查软件是否安装
    [root@backup ~]# rpm -qa rsync
    rsync-3.0.6-12.el6.x86_64

    第二里程:编写配置文件

    vim /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

    疑问?
    read only = true
    [nfs]
    comment = "backup dir by oldboy"
    path = /nfs

    第三个里程:创建备份目录管理用户
    useradd rsync -M -s /sbin/nologin

    第四个里程:创建备份目录
    mkdir /backup
    chown -R rsync.rsync /backup

    第五个里程:创建认证文件
    echo "rsync_backup:oldboy123" >>/etc/rsync.password
    chmod 600 /etc/rsync.password
    stat  /etc/rsync.password 查看权限
    第六个里程:启动rsync服务
    rsync --daemon

    ps -ef|grep rsync查看服务是否运行

    netstat -lntup|grep rsync查看端口号

    2)客户端部署流程
    第一个里程:确认软件是否安装
    [root@backup ~]# rpm -qa rsync
    rsync-3.0.6-12.el6.x86_64

    第二个里程:创建认证密码文件
    echo "oldboy123" >>/etc/rsync.password
    chmod 600 /etc/rsync.password

    第三个里程:进行数据备份测试
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    sending incremental file list
    hosts

    sent 189 bytes received 27 bytes 432.00 bytes/sec
    total size is 352 speedup is 1.63

     

    06 rsync服务错误排查方法

    1)检查错误日志
    2)可以在模拟环境下。模拟练习一些错误

    扩展说明:rsync启动服务扩展参数
    --port 指定rsync服务端口号信息,默认是873
    --config=xxx 指定识别的rsync服务配置文件信息

    07 rsync服务扩展应用

    ① 守护进程多模块功能配置
    第一步:修改配置文件添加
    vim /etc/rsyncd.conf
    [backup01]
    comment = "backup dir by oldboy"
    path = /backup
    [backup02]
    comment = "backup dir by oldboy"
    path = /backup02

    第二步:创建多模块目录和属主和属组
    mkdir /backup02
    chown -R rsync.rsync /backup02

    第三步:重启服务程序
    killall rsync
    rsync --daemon

    第四步:进行测试检查

    ② 守护进程的排除功能实践
    第一种数据备份排除方式:--exclude
    rsync -avz /test_dir/ --exclude=b --exclude=d rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password 
    rsync -avz /test_dir/ --exclude={b,d} rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password 
    rsync -avz /test_dir/ --exclude={b..d} rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password 
    第二种数据备份排除方式:--exclude-from=file 创建排除文件,里面的文件为相对路径
    rsync -avz /test_dir/ --exclude-from=./exclude_file.txt rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password

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

    模块后面跟目录就可以分类备份
    rsync -avz /etc/hosts --exclude-from=./exclude_file.txt rsync_backup@172.16.1.41::backup01/sa/ --password-file=/etc/rsync.password
    rsync -avz /etc/hosts --exclude-from=./exclude_file.txt rsync_backup@172.16.1.41::backup01/dev/ --password-file=/etc/rsync.password
    rsync -avz /etc/hosts --exclude-from=./exclude_file.txt rsync_backup@172.16.1.41::backup01/dba/ --password-file=/etc/rsync.password

    ④ 守护进程的访问控制配置
    三种情况:
    1. 只有白名单,白名单网段或主机信息允许。其余阻止
    2. 只有黑名单,黑名单网段或主机信息阻止,其余允许
    3. 有黑名单也要白名单,白名单网段或主机信息允许,黑名单网段或主机信息阻止,其余允许
    建议只选择前两种方式配置
    hosts allow = 172.16.1.0/24
    hosts deny = 0.0.0./32

    第一种情况:删除掉配置文件里的黑名单行,关掉服务再启动服务。

    ⑤ 守护进程无差异同步配置
    我有的,你也有;我没有的,你也不能有
    rsync -avz /test_dir/ --delete rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
    说明:一定要谨慎使用,否则可能会清空备份目录
    如果要快速清空目录数据,也可以使用无差异同步清空

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

    企业中一般设置为false
    list = false
    说明:表示是否列表显示rsync服务端所有模块信息
    [root@nfs01 test_dir]# rsync rsync_backup@172.16.1.41::
    backup01 "backup dir by oldboy"
    backup02 "backup dir by oldboy"

    Rsync服务常见问题汇总讲解:
    ==================================
    1. rsync服务端开启的iptables防火墙
    【客户端的错误】
    No route to host
    【错误演示过程】
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
    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服务端的防火墙服务(iptables)
    [root@backup mnt]# /etc/init.d/iptables stop
    iptables: Setting chains to policy ACCEPT: filter [ OK ]
    iptables: Flushing firewall rules: [ OK ]
    iptables: Unloading modules: [ OK ]
    [root@backup mnt]# /etc/init.d/iptables status
    iptables: Firewall is not running.

    2. rsync客户端执行rsync命令错误
    【客户端的错误】
    The remote path must start with a module name not a / 
    【错误演示过程】
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backup
    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模块)

    3. rsync服务认证用户失败*****
    【客户端的错误】
    auth failed on module oldboy
    【错误演示过程】
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::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]
    【异常问题解决】
    1. 密码真的输入错误,用户名真的错误
    2. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致
    3. /etc/rsync.password文件权限不是600
    4. rsync_backup:123456密码配置文件后面注意不要有空格
    5. rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称

    4. rsync服务位置模块错误
    【客户端的错误】
    Unknown module 'backup' 
    【错误演示过程】 
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
    @ERROR: Unknown module 'backup'
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
    【异常问题解决】
    1. /etc/rsyncd.conf配置文件模块名称书写错误

    5. rsync服务权限阻止问题
    【客户端的错误】
    Permission denied
    【错误演示过程】 
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
    Password: 
    sending incremental file list
    hosts
    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] 
    【异常问题解决】
    1. 备份目录的属主和属组不正确,不是rsync
    2. 备份目录的权限不正确,不是755

    6. rsync服务备份目录异常
    【客户端的错误】
    chdir failed 
    【错误演示过程】 
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
    Password: 
    @ERROR: chdir failed
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
    【异常问题解决】 
    1. 备份存储目录没有建立
    2. 建立的备份存储目录和配置文件定义不一致
    说明:如果没有备份存储目录

    7. rsync服务无效用户信息
    【客户端的错误】
    invalid uid rsync
    【错误演示过程】 
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
    Password: 
    @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
    【错误演示过程】 
    [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    password file must not be other-accessible
    continuing without password file
    Password: 
    sending incremental file list
    sent 26 bytes received 8 bytes 5.23 bytes/sec
    total size is 349 speedup is 10.26
    【异常问题解决】 
    rsync客户端的秘钥文件也必须是600权限

    9. rsync客户端连接慢问题
    IP === 域名 反向DNS解析
    【错误日志信息】 
    错误日志输出
    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.31: Name or service not known
    2017/03/08 20:14:43 [3422] connect from UNKNOWN (172.16.1.31)
    2017/03/08 20:14:43 [3422] rsync to backup/ from rsync_backup@unknown (172.16.1.31)
    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
    正确日志输出
    2017/03/08 20:16:45 [3443] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
    2017/03/08 20:16:45 [3443] connect from nfs02 (172.16.1.31)
    2017/03/08 20:16:45 [3443] rsync to backup/ from rsync_backup@nfs02 (172.16.1.31)
    2017/03/08 20:16:45 [3443] receiving file list
    2017/03/08 20:16:45 [3443] sent 76 bytes received 83 bytes total size 349
    【异常问题解决】
    查看日志进行分析,编写rsync服务端hosts解析文件

    对rsync服务端编写ip/主机名的解析

    10 rsync服务没有正确启动
    【错误日志信息】 
    Connection refused (111)
    【错误演示过程】 
    [root@oldboy-muban ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
    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]
    【异常问题解决】
    [root@oldboy-muban ~]# rsync --daemon
    [root@oldboy-muban ~]# ss -lntup |grep rsync
    tcp LISTEN 0 5 :::873 :::* users:(("rsync",1434,5))
    tcp LISTEN 0 5 *:873 *:* users:(("rsync",1434,4))
    [root@oldboy-muban ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
    Password: 
    sending incremental file list
    hosts 
    sent 196 bytes received 27 bytes 49.56 bytes/sec
    total size is 349 speedup is 1.57

    端口号873被占用 

    如果占用的服务可以关掉 就直接关掉解决

    如果不能关掉 就修改rsync的端口号

    先停掉rsync服务 #killall  rsync

    启用守护进程并指定端口号#rsync --daemon --port 8730

    另一个常用指定参数#rsync --daemon --config=/home/oldboy/rsyncd.conf

     

  • 相关阅读:
    java代码如何快速添加作者描述的注释最好能有详细的图解
    实现ModelDriver接口的功能
    Java Class类以及获取Class实例的三种方式
    java中的clone()
    applicationContext.xml 配置文件的存放位置
    Spring 整合hibernante 错误java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    Struts2配置问题java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    第三篇:解析库之re、beautifulsoup、pyquery(转)
    第二篇:请求库之requests,selenium
    爬虫基本原理(转)
  • 原文地址:https://www.cnblogs.com/cqzhou/p/8877934.html
Copyright © 2011-2022 走看看