• 二.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

     

  • 相关阅读:
    【算法学习笔记】76.DFS 回溯检测 SJTU OJ 1229 mine
    【算法学习笔记】75. 动态规划 棋盘型 期望计算 1390 畅畅的牙签盒(改)
    【算法学习笔记】74. 枚举 状态压缩 填充方案 SJTU OJ 1391 畅畅的牙签袋(改)
    【算法学习笔记】73.数学规律题 SJTU OJ 1058 小M的机器人
    【算法学习笔记】72.LCS 最大公公子序列 动态规划 SJTU OJ 1065 小M的生物实验1
    【算法学习笔记】71.动态规划 双重条件 SJTU OJ 1124 我把助教团的平均智商拉低了
    【算法学习笔记】70.回文序列 动态规划 SJTU OJ 1066 小M家的牛们
    【算法学习笔记】69. 枚举法 字典序处理 SJTU OJ 1047 The Clocks
    【算法学习笔记】68.枚举 SJTU OJ 1272 写数游戏
    【算法学习笔记】67.状态压缩 DP SJTU OJ 1383 畅畅的牙签袋
  • 原文地址:https://www.cnblogs.com/cqzhou/p/8877934.html
Copyright © 2020-2023  润新知