rsync守护进程方式实现数据备份存储
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)容易造成数据传输中断
利用一些收费软件 七牛云存储