Rsync

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 [email protected]::backup
#此时会提示输入密码
oldboy123

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

两种方式:

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

echo oldboy123 >/etc/rsync.password

chmod 600 /etc/rsync.password
##免密传输:--password-file=/etc/rsync.password
rsync -avz /etc [email protected]::backup --password-file=/etc/rsync.password

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

RSYNC_PASSWORD --- 设置环境变量实现免交互

echo 'export RSYNC_PASSWORD="oldboy123"' >> /etc/profile

rsync -avz /etc/selinux/config [email protected]::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 [email protected]::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 [email protected]::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)