搭建备份服务意义:
保证数据不会丢失
便于数据进行恢复
便于进行数据对比
备份服务实现:
利用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 --- 在客户端禁止显示服务端所有模块信息
思维导图