Rsync守护进程方式实现数据备份存储

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34646546/article/details/86421959

ryanc的部署过程

服务端部署过程

第一步:
确认软件是否安装

[root@alice002 ~]# rpm -qa rsync
rsync-3.1.2-4.el7.x86_64

为防止配置文件出现错误,可以重新安装

[root@alice002 ~]#yum reinstall rsync -y

第二步:
编写rsync配置服务配置文件

[root@alice002 ~]# rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd

补充:(centos6 默认没有rsync的配置文件, 需要手动创建 )
配置文件参数说明

[root@alice002 ~]# vi /etc/rsyncd.conf
[root@alice002 ~]# cat /etc/rsyncd.conf
#created by DK at 2019
##rsyncd.conf start##
uid = rsync							用于管理备份目录 默认用nobody
gid = rsync							用于管理备份目录 默认用nobody
port = 873							默认端口号
#fake super = yes					赋予rsync最大权限 用于修改想要放入模块的文件属主属组信息(centos6无需此配置)
use chroot = no						
max connections = 200				最大连接数 同时允许200个连接备份数据
timeout = 300						超时时间 当网络链路上没有数据传输时开始倒计时200s
lock file = /var/run/rsync.lock		控制并发数 只能是max connections参数指定的数量 超出后利用这个锁锁定
pid file = /var/run/rsyncd.pid		进程号码放到一个文件中
									1)便于快速停止进程
									2)可以用于判断服务是否启动
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						数据传输路径 默认保存在backup目录(记得先创建)

补充:为避免有坑 建议删除文字解释
第三步:
创建虚拟用户rsync

[root@alice002 ~]# useradd -s /sbin/nologin -M rsync		

第四步:
创建备份目录

[root@alice002 ~]# mkdir -p /backup

第五步:
创建密码文件

[root@alice002 ~]# echo "rsync_backup:oldboy123" >>/etc/rsync.password
[root@alice002 ~]# ll /etc/rsync.password 
-rw-r--r-- 1 root root 23 Jan 12 15:03 /etc/rsync.password

为保证其他用户查看不了此密码文件 修改权限为600

[root@alice002 ~]# chmod 600 /etc/rsync.password
[root@alice002 ~]# ll /etc/rsync.password 
-rw------- 1 root root 23 Jan 12 15:03 /etc/rsync.password

第六步:
启动守护进程

[root@alice002 ~]# systemctl start rsyncd.service

补充:centos6:rsync --daemon
检查是否启动

[root@alice002 ~]# systemctl is-active rsyncd.service 
active

启动开机自启

[root@alice002 ~]# systemctl enable rsyncd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.

检查是否开机自启

[root@alice002 ~]# systemctl is-enabled rsyncd.service 
enabled

第七步:
检查服务进程是否存在

[root@alice002 ~]# ps -ef |grep rsync
root       6543      1  0 17:59 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
root       7751   7353  0 18:16 pts/0    00:00:00 grep --color=auto rsync

检查服务进程端口信息

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

第八步:
修改backup目录属主属组

[root@alice002 ~]# chown -R rsync.rsync  /backup/
[root@alice002 ~]# ll -d /backup
drwxr-xr-x 3 rsync rsync 51 Dec 31 11:38 /backup

客户端部署过程

目的:实现免交互方式传输数据(不需要手动输入密码)
第一步:
查看软件是否安装 并进行yum安装

[root@web01 ~]# yum install rsync -y

第二步:
配置创建认证密码文件

[root@web01 ~]# echo "oldboy123" >/etc/rsync.password
[root@web01 ~]# cat /etc/rsync.password 
oldboy123

修改密码文件权限为600

[root@web01 ~]# chmod 600 /etc/rsync.password
[root@web01 ~]# ll -d /etc/rsync.password
-rw------- 1 root root 10 Jan 15 08:47 /etc/rsync.password

第三步:
最终确认

[root@web01 ~]# rsync -avz /tmp   rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
tmp/
tmp/ks-script-eNSfgz
tmp/yum.log
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.X11-unix/
tmp/.XIM-unix/
tmp/.font-unix/
tmp/vmware-root/

sent 740 bytes  received 94 bytes  1,668.00 bytes/sec
total size is 836  speedup is 1.00
[root@web01 ~]#

在备份服务器backup上查看确认

[root@backup ~]# tree /backup/
/backup/
└── tmp
    ├── ks-script-eNSfgz
    ├── vmware-root
    └── yum.log

2 directories, 2 files

至此部署全部完成

rsync 命令参数说明

	-avz 	常用参数
	-a		属于一个归档参数,等于直接使用 -rlptgoD 的参数效果
	-r		递归备份传输数据
	-l		保持链接文件属性不变
	-p		保持普通文件属性权限不变
	-t		保持文件时间信息不被改变(mtime修改时间)
	-g		保持文件属组信息不变	
	-o		保持文件属主信息不变
	-D		保持设备文件属性信息不变
	-v		显示命令执行过程
	-z		传输文件时,对文件进行压缩处理(提高传输效率 节省带宽)
	-L		保留软链接指向的目标文件
	-P		显示同步过程及传输的进度信息
	--exclude=PATTERN         指定排除单个数据信息
	--exclude-from=PATTERN    指定排除多个数据信息
	--bwlimit=100			  限速传输(单位为M)
	--delete 				  让目标文件和源文件保持高度一致

补充:想让用户利用守护进行备份数据时,保持属主属组信息不被改变

第一步:
修改配置文件

// An highlighted block
var foo = 'bar';

注释下面参数

#fake super = yes 

说明:如果不注释 会将所有文件的属主属组改为root
第二步:
修改模块属主属组

[root@backup ~]# chown root.root /backup/

第三步:
重新启动服务

[root@backup ~]# systemctl restart rsyncd

use chroot (配置文件参数)

和链接文件有关
use chroot = no	 	备份链接文件时,会保持链接文件属性信息,链接文件会失效(红底白字闪烁
use chroot = yes	备份链接文件时,会保持文件链接属性信息,但是 如果备份服务器上有链接文件所指向的源文件(恰好文件名一样)会直接指向备份服务器上的源文件
					
为保证安全,此配置参数设置为 no 如需传输软链接 请参考下面过程

备份软链接

第一步:
创建软链接

[root@nfs01 ~]# echo "cesh" >oldboy.txt
[root@nfs01 ~]# ln -s  oldboy.txt    oldgril
[root@nfs01 ~]# ll
total 8
-rw-r--r--  1 root   root      5 Jan 15 09:57 oldboy.txt
lrwxrwxrwx  1 root   root     10 Jan 15 09:58 oldgril -> oldboy.txt

第二步:
进行传输

[root@nfs01 ~]# rsync -rptgoDLvz   oldgril    rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
oldgril

sent 98 bytes  received 43 bytes  282.00 bytes/sec
total size is 5  speedup is 0.0

第三步:在备份服务器backup上进行检查

[root@backup backup]# ll
total 4
-rw-r--r-- 1 rsync rsync 5 Jan 15 09:57 oldgril
[root@backup backup]# cat oldgril 
cesh

对备份目录数据信息进行排除

	--exclude=PATTERN         指定排除单个数据信息
	--exclude-from=PATTERN    指定排除多个数据信息

模拟环境:

[root@nfs01 ~]# tree /oldboy_dir/
/oldboy_dir/
├── oldboy01
│   ├── a.txt
│   └── c.txt
├── oldboy02
│   ├── b.txt
│   └── c.txt
└── oldboy03
├── a.txt
├── b.txt
└── c.txt
	
3 directories, 7 files

(1)排除单个数据信息

	需求 需要备份/oldboy 但是不需要/oldboy01/a.txt

第一步:

[root@nfs01 ~]# rsync -avz /oldboy_dir/  rsync_backup@172.16.1.41::backup --exclude=/oldboy01/a.txt --password-file=/etc/rsync.password 
sending incremental file list
./
oldboy01/
oldboy01/c.txt
oldboy02/
oldboy02/b.txt
oldboy02/c.txt
oldboy03/
oldboy03/a.txt
oldboy03/b.txt
oldboy03/c.txt

sent 465 bytes  received 157 bytes  1,244.00 bytes/sec
total size is 0  speedup is 0.00

第二步:
在备份服务器backup上进行检查

[root@backup backup]# tree
.
├── oldboy01
│   └── c.txt
├── oldboy02
│   ├── b.txt
│   └── c.txt
└── oldboy03
	├── a.txt
	├── b.txt
	└── c.txt

3 directories, 6 files

注:排除路径信息需要利用相对路径(相对于要备份传输目录而言)

(2)排除多个个数据信息

需求02:需要备份/oldboy_dir 但是不需要/oldboy01/a.txt 不需要/oldboy01/b.txt 不需要/oldboy01/c.txt 

第一步:
生成一个排除文件信息 将多个要排除的数据进行整合在一个文件中

cat /oldboy_dir/exclude.txt
oldboy02
oldboy01/a.txt
oldboy02/b.txt
oldboy03/c.txt
exclude.txt(注:将此排除文件也进行排除)

第二步:
进行传输

rsync -avz /oldboy_dir/  rsync_backup@172.16.1.41::backup --exclude-from=/oldboy_dir/exclude.txt  --password-file=/etc/rsync.password

第三步:
在备份服务器backup上进行检查

[root@backup backup]# tree

守护进程无差异同步配置

	 --delete   实现无差异同步参数
	 保持两端文件高度一致(慎用)

命令

[root@backup backup]# rsync -avz --delete /oldboy_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

守护进程多模块功能配置

第一步:修改配置文件

[backup]
comment = "backup dir by oldboy"
path = /backup
[webbackup]
comment = "backup dir for web"
path = /webbackup

说明:添加了多模块信息
第二步: 创建备份目录 修改属主和属组信息

[root@backup backup]# chown -R rsync.rsync /backup/ /webbackup/
[root@backup backup]# ll /backup/ /webbackup/ -d
drwxr-xr-x 4 rsync rsync 78 Jan 14 17:06 /backup/
drwxr-xr-x 2 rsync rsync  6 Jan 14 17:13 /webbackup/

第三步: 重启rsync服务

[root@backup backup]# systemctl restart rsyncd

守护进程来创建备份目录

客户端可以自行在备份目录中创建子目录
说明:rsync客户端创建备份目录子目录时候,只能创建一级目录,不能创建多级目录

[root@nfs01 oldboy_dir]# rsync -avz /oldboy_dir/ rsync_backup@172.16.1.41::backup/sa01/ --password-file=/etc/rsync.password
sending incremental file list
created directory sa01
./
exclude.txt
oldboy123.txt
oldboy02/
oldboy02/a.txt
oldboy02/b.txt
oldboy02/c.txt
oldboy03/
oldboy03/a.txt
oldboy03/b.txt
oldboy03/c.txt

sent 601 bytes  received 222 bytes  1,646.00 bytes/sec
total size is 54  speedup is 0.07

限速传输

在进行较大数据传输时,如果不进行限速 会占用带宽 导致内网瘫痪。所以我们在传输大文件时候需要使用限速参数
模拟环境:

[root@nfs01 ~]# dd if=/dev/zero of=/tmp/500M bs=10M count=50
[root@nfs01 /]# ll /tmp/
total 512004
-rw-r--r--  1 root root 524288000 Jan 15 14:18 500M

不限速传输测试

[root@nfs01 tmp]# rsync -avzP /tmp/500   rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
500
    524,288,000 100%   62.29MB/s    0:00:08 (xfr#1, to-chk=0/1)

sent 509,967 bytes  received 43 bytes  14,366.48 bytes/sec
total size is 524,288,000  speedup is 1,027.00

此时传输速度为每秒62MB 严重占用带宽
限速传输

[root@nfs01 tmp]# rsync -avzP /tmp/500   rsync_backup@172.16.1.41::backup --bwlimit=10  --password-file=/etc/rsync.password 
sending incremental file list
500
    524,288,000 100%   11.29MB/s    0:00:44 (xfr#1, to-chk=0/1)

sent 509,967 bytes  received 43 bytes  10,099.21 bytes/sec
total size is 524,288,000  speedup is 1,027.00

限速后不会影响内网带宽

rsync备份服务总结

优点:
01. 软件功能比较灵活
02. 软件配置部署简单
03. 数据传输的时候可以实现全量 或 增量备份

缺点:
01. 备份大量小文件时候,容易造成数据传输中断 传输效率不高
    将大量小文件进行打包压缩
02. 备份文件容量比较大(G)容易造成数据传输中断
    利用一些收费软件 七牛云存储

附:守护进程方式传输数据原理图

附:Rsync守护进程式传输文件原理图

猜你喜欢

转载自blog.csdn.net/qq_34646546/article/details/86421959
今日推荐