综合架构_Rsync备份服务

搭建备份服务意义:

  保证数据不会丢失

  便于数据进行恢复

  便于进行数据对比

备份服务实现:

  利用rsync软件实现数据统一存储备份
  rsync --- a fast, versatile, remote (and local) file-copying tool
  快速, 多功能, 远程(和本地)文件复制
  可以实现数据全量或者增量备份:
  A主机(5G) -5G-> backup(5G) --- 全量备份
  A主机(5G+10G) -15G-> backup(5G+10G) --- 全量备份 备份数据效率比较低
  A主机(5G+10G) -10G-> backup(5G+10G) --- 增量备份 备份数据效率更高

增量备份算法:
  01. 对比文件属性信息 *

  
  02. 验证文件指纹信息

备份服务应用过程:

1.Local:本地进行数据备份 ==cp

本地备份文件:
cp 源文件  目标路径
cp /etc/hosts /tmp/
rsync /etc/hosts /tmp/
    
本地备份目录:
cp -a /oldboy  /tmp/
rsync -a /oldboy  /tmp/

2.Access via remote shell: 远程方式进行数据备份

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

在backup服务器上操作:
	拉取文件信息:
	rsync root@10.0.0.200:/etc/hosts  /backup
	拉取目录信息:
	rsync -r root@10.0.0.200:/oldboy  /backup

在backup服务器上操作:
	推送文件信息:
	rsync /etc/hosts root@10.0.0.200:/backup
     rsync -avz /etc/hosts  rsync://rsync_backup@172.16.1.41:873/db_dir 推送目录信息: rsync -r /oldboy root@10.0.0.200:/backup 异常问题: 拉取或者推送目录信息 目录信息后面有/ /oldboy/ 表示将目录下面的内容进行远程拉取或者推送 目录信息后面没有/ /oldboy 表示将目录本身以及目录下面的内容进行远程拉取或者推送

 Access via rsync daemon: 守护进程方式进行远程备份 

特点:

  1.免交互传输备份数据

  2.进行远程传输验证

    a.基于认证用户用户信息

    b.基于地址进行验证

  3.传输数据时进行管理控制

命令参数:

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)	   
		                        归档模式; 等于 使用了 -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
                                保持文件的权限不变	644 --- 644
	-o, --owner                 preserve owner (super-user only)
	                            保持用户属主信息不变(超级用户)
	-g. --group                 preserve group
	                            保持用户属组信息不变
	-t, --times                 preserve modification times
                                保持文件修改时间不变
	-D							preserve device files (super-user only)
	                            可以传输设备文件信息
	-P(大写)                    显示数据传输进度信息
	-v                          显示传输过程信息
	-z                          传输数据信息时,是否将数据进行压缩传输
	--delete                    无差异同步数据信息 (慎用)
	                            A主机(操作) 拥有的数据   backup 也必须有相同的数据
				  A主机(操作) 没有的数据   backup 有的数据必须删除

  

   远程主机Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
    客户端推送备份文件信息      
    rsync -avz /etc/hosts  rsync_backup@172.16.1.41::backup
    客户端推送备份目录信息
    rsync -avz /oldboy/  rsync_backup@172.16.1.41::backup
          
		  
    rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
备份服务安装部署:


服务端部署: 第一个历程: 安装软件程序 yum install -y rsync 第二个历程: 编写服务配置文件
vim /etc/rsyncd.conf 
uid = rsync                     --- 指定备份目录属主信息  
gid = rsync                     --- 指定备份目录属组信息  
port = 873                      --- 定义服务端口号   
fake super = yes                --- 将虚拟用户(rsync)伪装成管理员 (直接接收文件的完整属性)
use chroot = no                 --- 安全有关参数(禁锢推送的数据至某个目录,不允许跳出该目录)
max connections = 200           --- 最大连接数
timeout = 300                   --- 设置连接超时时间,链路上多久没有数据传输, 就会强制断开连接
pid file = /var/run/rsyncd.pid  --- 表示服务处于运行状态 | 根据文件中号码杀死进程
lock file = /var/run/rsync.lock --- 结合max connections控制最大的连接数
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                  --- 备份目录

第三个历程: 创建用户信息(虚拟用户)

useradd -M -s /sbin/nologin rsync

第四个历程: 创建密码文件

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

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

mkdir /backup
chown -R rsync.rsync /backup/

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

systemctl start rsyncd
systemctl enable rsyncd

第7个历程:检查rsync 873端口是否处于监听状态

[root@backup ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      15180/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      15180/rsync

客户端部署:

方式一:

第一个历程: 进行备份数据测试

yum install -y rsync

rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

第二个历程: 实现免交互备份数据

echo oldboy123 >/etc/rsync.password chmod 600 /etc/rsync.password rsync -avz /oldboy/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

方式二:

export RSYNC_PASSWORD=******

rsyncs守护进程数据备份原理:  

1.执行传输命令,建立网络连接

2.进行用户认证过程 用户名rsync_backup 密码 ******

3.用户身份转换    任意用户 -----> rsync

 确保备份目录属主和属组     rsync

4.文件保存到备份目录中     利用rsync用户将文件属性和属主进行修改

 文件属主和属组变为rsync 将rsync伪装成一个超级管理员 fack super 

备份服务企业应用 

1)  配置多模块功能 


 第一个历程: 配置文件中编写多个模块
      [dev_dir]
       comment = "backup dir by dev"
       path = /dev_dir
       [sa_dir]
       comment = "backup dir by sa"
       path = /sa_dir
       [db_dir]
       comment = "backup dir by dba"
       path = /db_dir
 第二个历程: 创建备份目录并授权
	mkdir -p /{dev_dir,sa_dir,db_dir}
	chown rsync.rsync /{dev_dir,sa_dir,db_dir}    

 

2)创建备份目录子目录信息 

rsync -avz /var/log/secure rsync_backup@172.16.1.41::sa_dir/log/ --password-file=/etc/rsync.password
说明: 不能创建多级子目录
	   
采用远程模式创建多级子目录:
rsync -avz --rsync-path="mkdir -p /sa_dir/01/02/03/ && rsync"  /etc/hosts   root@172.16.1.41:/sa_dir/01/02/03/
http://www.schwertly.com/2013/07/forcing-rsync-to-create-a-remote-path-using-rsync-path/

rsync -avz --relative /02/03/04/ /etc/hosts root@172.16.1.41:/sa_dir/01/

3)同步备份数据排除功能

 --exclude       --- 排除少量文件或目录信息
--exclude-from --- 排除大量文件或目录信息

    [root@localhost oldboy]# tree . ├── oldboy01 │   ├── a.txt │   ├── b.txt │   └── c.txt ├── oldboy02 │   ├── a.txt │   ├── b.txt │   └── c.txt └── oldboy03 ├── a.txt ├── b.txt └── c.txt 需求01: 除了oldboy01/a.txt oldboy03目录不做备份 rsync -avz /oldboy/ --exclude=oldboy01/a.txt --exclude=oldboy03/ rsync_backup@172.16.1.41::sa_dir --password-file=/etc/rsync.password
说明: --exclude后面需要写上相对路径信息, 相对路径是相对于同步目录而言 需求02: 除了oldboy01/a.txt oldboy02/b.txt oldboy03/c.txt文件不做备份
编写一个排除数据信息文件
vim paichu.txt oldboy01/a.txt oldboy02/b.txt oldboy03/c.txt rsync -avz /oldboy/ --exclude-from=/oldboy/paichu.txt rsync_backup@172.16.1.41::sa_dir --password-file=/etc/rsync.password

4)备份服务访问控制功能  

hosts allow ---> 白名单

hosts deny ---->黑名单

 需求:
	   01. 将数据备份 dev_dir目录时, 172网段和10网段都允许
	       [dev_dir]
	       hosts allow = 172.16.1.0/24,10.0.0.0/24
	   02. 将数据备份 sa_dir目录时,  允许172网段备份 禁止10网段备份
	       [sa_dir]
	       hosts allow = 172.16.1.0/24
	   03. 将数据备份 db_dir目录时,  禁止172网段备份 允许10网段备份
	       [db_dir]
           hosts deny = 172.16.1.0/24

   

rsync配置文件中:
全局配置: 模块之上的配置信息
局部配置: 模块之中的配置信息
结论: 局部配置优先于全局配置
    [dev_dir]
       comment = "backup dir by dev"
       hosts allow = 172.16.1.0/24,10.0.0.0/24
       path = /dev_dir
       [sa_dir]
       comment = "backup dir by sa"
       hosts allow = 172.16.1.0/24
       path = /sa_dir
       [db_dir]
       comment = "backup dir by dba"
       hosts deny = 172.16.1.0/24
       path = /db_dir

5) 配置文件列表功能


   list = true    --- 在客户端可以显示服务端所有模块信息
                      rsync rsync_backup@172.16.1.41::
   list = false   --- 在客户端禁止显示服务端所有模块信息  

思维导图  

 

原文地址:https://www.cnblogs.com/zhanghongqi/p/11718203.html