Rsync

作者: 1220 | 来源:发表于2021-04-26 19:46 被阅读0次
    rsync原理图

    1. rsync概述

    rsync常用的传输工具,多台服务器之间传输数据,具备全量同步和增量同步
    备份服务: rsync+定时任务 实现定时备份
    官网: 传送门 http://rsync.samba.org
    端口: 873
    rsync运行模式: c/s client(客户端)/server(服务端) rsync守护进程模式
    

    2. rsync应用场景

    .定时任务+rsync(服务)
    https://www.processon.com/view/link/608624a50791290af3353665

    3. 部署rsync服务

    3.1服务端backup

    第一个历程:安装部署软件程序

    #rpm -qa|grep rsync
    yum install -y rsync 
    

    第二个历程:创建管理备份目录以及数据用户信息

    useradd rsync -M -s /sbin/nologin
    

    第二个历程:创建备份数据目录

    mkdir /backup
    chown rsync.rsync /backup/ 
    

    第三个历程:创建用户列表文件

    echo 'rsync_backup:oldboy123' >/etc/rsync.password
    chmod 600 /etc/rsync.password
    

    第四个历程:编写配置文件

    #vi /etc/rsyncd.conf
    uid = rsync
    gid = rsync
    port = 873
    fake super = yes
    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
    
    -----------------------------架构备份服务文件配置讲解---------------------------------------------------------
    /etc/rsyncd.conf
    uid = rsync --- 指定rsync服务备份目录或数据信息管理用户信息
    gid = rsync --- 指定rsync服务备份目录或数据信息管理用户组信息
    port = 873 --- 指定服务程序端口信息
    fake super = yes --- 将uid指令指定用户可以伪装为管理员用户
    use chroot = no --- 提高数据备份安全性,前提需要将备份目录权限与uid信息设置root用户 ???鸡肋
    max connections = 200 --- 设置最大连接数
    timeout = 300 --- 设置连接会话超时时间(闲置状态)
    pid file = /var/run/rsyncd.pid --- 记录服务程序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 --- 用户密码文件(权限600 属主属组 root)
    [backup] --- 模块信息 模块下面的信息成为局部配置信息
    comment = "实现运维人员备份数据" --- 模块注释说明
    path = /backup --- 数据备份目录
    [devdata]
    comment = "实现开发人员备份数据"
    path = /devdata
    
    

    第五个历程:启动服务程序

    systemctl start rsyncd
    
    ps -ef|grep rsync 查询程序是否启动
    netstat -lntup|grep rsync 查询程序是否启动
    

    3.2客户端部署过程

    交互式实现数据传递过程:

    rsync -avz /home/oldboy/oldboy.txt rsync_backup@172.16.1.41::backup
    #此时会提示输入密码
    oldboy123
    

    免交互实现数据传递过程:

    两种方式:

    方式一:在客户端创建一个密码文件(主要使用)

    echo oldboy123 >/etc/rsync.password
    
    chmod 600 /etc/rsync.password
    ##免密传输:--password-file=/etc/rsync.password
    rsync -avz /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    

    方式二:配置环境变量实现免交互

    RSYNC_PASSWORD --- 设置环境变量实现免交互
    
    echo 'export RSYNC_PASSWORD="oldboy123"' >> /etc/profile
    
    rsync -avz /etc/selinux/config rsync_backup@172.16.1.41::backup
    

    参数信息总结:-avz

    -v, --verbose increase verbosity
    显示传输过程信息
    -z, --compress compress file data during the transfer
    文件在传输时做压缩处理
    -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
    执行-a参数等价于执行-rlptgoD
    -r, --recursive recurse into directories
    进行递归复制数据信息(可以实现目录传输)
    -l, --links copy symlinks as symlinks 没有任何作用
    可以复制软链接文件 
    -L, --copy-links transform symlink into referent file/dir 
    将链接文件所执行源文件信息做备份
    -p, --perms preserve permissions
    维持权限属性信息不变 
    -t, --times preserve modification times
    维持文件修改时间属性不变
    -o, --owner preserve owner (super-user only) 
    维持文件属主信息不变
    -g, --group preserve group
    维持文件属组信息不变
    -D same as --devices --specials 
    复制传输设备文件信息可以保持设备文件属性信息不变 
    -P same as --partial --progress 
    显示数据传输进度信息
    --belete 实现无差异数据同步
    --bwlimit 实现数据传输限速功能 KBps
    --exclude 实现数据备份排除功能
    --exclude-form 实现数据备份排除功能
    --password-file 读取密码文件实现免交互传输数据
    --port 指定访问备份服务端口信息
    
    

    4 补充说明

    4.1 补充:rsyncd.conf文件中全局配置和局部配置

        全局配置:模块以上的配置信息 影响全部模块
        局部配置:模块以下的配置信息 只影响当前模块  
        总结:局部配置优先于全局配置
    

    4.2 补充:如何保证备份的数据属主和属组信息不变

        4.2.1 方法一:增加模块
         不同用户向不同模块传输数据
    
         4.2.2 方法二:修改配置文件uid信息
         uid = root
         gid = root
         #fake super = yes
         备份目录属主属组需要修改为 root权限
    
    

    4.3. rsync守护进程企业应用

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

    开发人员
    运维人员
    数据库人员
    创建多模块 --- 创建多模块对应目录并授权 --- 重启服务
        [backup]
        comment = "backup dir by oldboy"
        path = /backup
        [devdir]
        path = /devdir
        [dbdir]
        path = /dbdir
    

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

        环境准备:
    [root@nfs01 ~]# mkdir /oldboy_dir/oldboy{01..03} -p
        [root@nfs01 ~]# touch /oldboy_dir/oldboy{01..03}/{a..c}.txt
        [root@nfs01 ~]# tree /oldboy_dir/
        /oldboy_dir/
        ├── oldboy01
        │?? ├── a.txt
        │?? ├── b.txt
        │?? └── c.txt
        ├── oldboy02
        │?? ├── a.txt
        │?? ├── b.txt
        │?? └── c.txt
        └── oldboy03
            ├── a.txt
            ├── b.txt
            └── c.txt
        需求:
        01. 排除oldboy01目录不要传输备份,排除oldboy03目录中a.txt文件不要传输备份
    
    `实现需求:--exclude=PATTERN`
    
        [root@nfs01 ~]# rsync -avz /oldboy_dir/ --exclude=oldboy01 --exclude=oldboy03/a.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
        sending incremental file list
        ./
        oldboy02/
        oldboy02/a.txt
        oldboy02/b.txt
        oldboy02/c.txt
        oldboy03/
        oldboy03/b.txt
        oldboy03/c.txt
        
        sent 381 bytes  received 134 bytes  1,030.00 bytes/sec
        total size is 0  speedup is 0.00
        总结:排除的路径信息,需要编写为指定目录的相对路径
    
    `常见错误`
        1. 排除参数后面数据信息,不能写绝对路径
        2. 排除参数后面数据信息,不能写相对路径
        
        02. 排除的数据量比较大,有多个目录,多个文件都要排除
        vim exlude.txt 
        oldboy01
        oldboy03/a.txt
    `错误示范:
    [root@nfs01 oldboy_dir]# rsync -avz /oldboy_dir/ --exclude-from=/oldboy_dir/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
        sending incremental file list
        ./
        exclude.txt
        oldboy02/
        oldboy02/a.txt
        oldboy02/b.txt
        oldboy02/c.txt
        oldboy03/
        oldboy03/b.txt
        oldboy03/c.txt
        
        sent 482 bytes  received 157 bytes  1,278.00 bytes/sec
        total size is 24  speedup is 0.04`
    

    相关文章

      网友评论

          本文标题:Rsync

          本文链接:https://www.haomeiwen.com/subject/gdfilltx.html