守护进程方式备份数据
- 可以进行一些配置管理
- 可以进行安全策略管理
- 可以实现自动传输备份数据
rsync
守护进程服务端部署
主机名称和IP地址规划
服务 | 主机名 | eth0网卡IP | eth1网卡IP | 软件 |
---|---|---|---|---|
防火墙服务器 | firewalld | 10.0.0.81 | 172.16.1.81 | firewalld |
负载均衡服务器 | lb01 | 10.0.0.5 | 172.16.1.5 | nginx,keepalived |
负载均衡服务器 | lb02 | 10.0.0.6 | 172.16.1.6 | nginx,keepalived |
web服务器 | web01 | 10.0.0.7 | 172.16.1.7 | nginx |
web服务器 | web02 | 10.0.0.8 | 172.16.1.8 | nginx |
web服务器 | web03 | 10.0.0.9 | 172.16.1.9 | nginx |
存储服务器 | nfs01 | 10.0.0.31 | 172.16.1.31 | nfs |
备份服务器 | backup | 10.0.0.41 | 172.16.1.41 | rsync |
数据库服务器 | db01 | 10.0.0.51 | 172.16.1.51 | mysql,mariaDB |
批量管理服务器 | m01 | 10.0.0.61 | 172.16.1.61 | ansible |
跳板机服务器 | jumpserver | 10.0.0.71 | 172.16.1.71 | jumpserver |
监控服务器 | zabbix | 10.0.0.72 | 172.16.1.72 | zabbix |
缓存服务器 | 暂无 | 暂无 | 暂无 | 暂无 |
下载安装rsync
rpm -qa|grep rsync
yum install -y rsync
编写配置文件
man rsyncd.conf
vim /etc/rsyncd.conf
#指定管理备份目录的用户
uid = rsync
#指定管理备份目录的用户组
gid = rsync
#定义rsync备份服务的网络端口号
port = 873
#将rsync虚拟用户伪装成为一个超级管理员用户
fake super = yes
#和安全相关的配置
use chroot = no
#最大连接数 同时只能有200个客户端连接到备份服务器
max connections = 200
#超时时间(单位秒)
timeout = 300
#记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行
pid file = /var/run/rsyncd.pid
#锁文件
lock file = /var/run/rsync.lock
#rsync服务的日志文件 用于排错分析问题
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 1997sty"
#模块中配置参数 指定备份目录
path = /backup
创建rsync服务的虚拟用户
useradd rsync -M -s /sbin/nologin
创建备份服务认证密码文件
echo "rsync_backup:123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
创建备份目录并修改属主属组信息
mkdir /backup
chown rsync.rsync /backup/
启动备份服务并设置开机启动
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsyncd
rsync
守护进程客户端部署
参数说明
- OPTION : 设置参数
- USER : 指定认证用户信息(不是linux系统用户)
- HOST : 指定远程主机IP地址或者主机名称
- SRC : 要拉取或要推送的数据
- DEST : 备份服务器的模块信息
命令参数
- -v : --verbose 显示详细的传输信息
- -a : --archive 全部归档参数(-r,-t,-o,-p,-g,-D,-l)
- -r : --recursive 递归参数
- -t : --times 保持文件属性信息时间信息不变(修改时间)
- -o : --owner 保持文件属主信息不变
- -g : --group 保持文件属组信息不变
如何让-o和-g参数生效,需要将配置文件uid和gid改为root,需要将fake super参数进行注释
- -p : --perms 保持文件权限信息不变
- -D : 保持设备文件信息不变
- -l : --links 保持链接文件属性不变
- -L : 保持链接文件数据信息不变
- -P : 显示数据传输的进度信息
- --exclude=PATTERN : 排除指定文件
- --exclude-from=file : 排除指定文件内的文件列表不被传输(批量排除)
- --bwlimit=RATE : 限制传输的速率
- --delete : 无差异同步参数(慎用)
拉取数据备份
rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
推送数据备份
rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
创建一个密码文件
echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
进行免交互传输数据测试
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
rsync
服务常见问题
- rsync服务端开启的iptables防火墙
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
rsync:failed to connect to 172.16.1.41: No route to host (113)
rsyncerror: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
异常问题解决:关闭rsync服务端的防火墙服务(iptables)
[root@backup mnt]# /etc/init.d/iptables stop
iptables:Setting chains to policy ACCEPT: filter [ OK ]
iptables:Flushing firewall rules: [ OK ]
iptables:Unloading modules: [ OK ]
[root@backup mnt]# /etc/init.d/iptables status
iptables:Firewall is not running.
- rsync客户端执行rsync命令错误
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backup
ERROR: Theremote path must start with a module name not a /
rsyncerror: error starting client-server protocol (code 5) at main.c(1503)[sender=3.0.6]
异常问题解决:rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)
@ERROR: auth failed on module backup
认证用户失败
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol(code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
- 密码真的输入错误,用户名真的错误
password-file = /etc/rsync.password
指定的密码文件和实际密码文件名称不一致/etc/rsync.password
文件权限不是600rsync_backup:123456
密码配置文件后面注意不要有空格rsync
客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称
Unknown module 'backup'
位置模块错误
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol(code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
/etc/rsyncd.conf
配置文件模块名称书写错误
Permission denied
权限阻止
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.5z3AOA" (inbackup) failed: Permission denied (13)
sent 196 bytes received 27 bytes 63.71 bytes/sec
total size is 349 speedup is 1.57
rsync error: some files/attrs were not transferred(see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
异常问题解决:
- 共享目录的属主和属组不正确,不是rsync
- 共享目录的权限不正确,不是755
chdir failed
备份目录异常
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
@ERROR: chdir failed
rsync error: error starting client-server protocol(code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:
- 备份存储目录没有建立
- 建立的备份存储目录和配置文件定义不一致
invalid uid rsync
无效用户信息
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol(code 5) at main.c(1503) [sender=3.0.6]
异常问题解决:rsync服务对应rsync虚拟用户不存在了
password file must not be other-accessible
客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password:
sending incremental file list
sent 26 bytes received 8 bytes 5.23 bytes/sec
total size is 349 speedup is 10.26
异常问题解决:rsync客户端的秘钥文件也必须是600权限
- rsync客户端连接慢问题
错误日志输出
2017/03/08 20:14:43 [3422] params.c:Parameter() -Ignoring badly formed line in configuration file: ignore errors
2017/03/08 20:14:43 [3422] name lookup failed for 172.16.1.31: Name or service not known
2017/03/08 20:14:43 [3422] connect from UNKNOWN(172.16.1.31)
2017/03/08 20:14:43 [3422] rsync to backup/ from rsync_backup@unknown (172.16.1.31)
2017/03/08 20:14:43 [3422] receiving file list
2017/03/08 20:14:43 [3422] sent 76 bytes received 83 bytes total size 349
正确日志输出
2017/03/08 20:16:45 [3443] params.c:Parameter() -Ignoring badly formed line in configuration file: ignore errors
2017/03/08 20:16:45 [3443] connect from nfs02(172.16.1.31)
2017/03/08 20:16:45 [3443] rsync to backup/ from rsync_backup@nfs02 (172.16.1.31)
2017/03/08 20:16:45 [3443] receiving file list
2017/03/08 20:16:45 [3443] sent 76 bytes received 83 bytes total size 349
异常问题解决:查看日志进行分析
- rsync服务没有正确启动
Connection refused (111)
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
rsync: failed to connect to 172.16.1.41: Connectionrefused (111)
rsync error: error in socket IO (code 10) atclientserver.c(124) [sender=3.0.6]
解决 rsync服务没开启
[root@nfs01 ~]# rsync --daemon
[root@nfs01 ~]# ss -lntup |grep rsync
tcp LISTEN 0 5 :::873 :::* users:(("rsync",1434,5))
tcp LISTEN 0 5 *:873 *:* users:(("rsync",1434,4))
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
sent 196 bytes received 27 bytes 49.56 bytes/sec
total size is 349 speedup is 1.57
守护进程服务企业应用
守护进程多模块功能配置
vi /etc/rsyncd.conf
#[模块名]
#comment = "模块信息"
#path = 模块保存路径
[backup]
comment = "backup dir by 1997sty"
path = /backup
[dba]
comment = "backup dir by 1997sty"
path = /dba
[dev]
comment = "backup dir by 1997sty"
path = /devdata
守护进程的排除功能实践
- 目录情况
/1997sty
├── 01.txt
├── 02.txt
├── a
│ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
├── b
│ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
└── c
├── 1.txt
├── 2.txt
└── 3.txt
- 将目录下面 a目录数据全部备份 b目录不要备份1.txt文件 c整个目录不要做备份
#相对路径
rsync -avz /1997sty --exclude=b/1.txt --exclude=c/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#绝对路径
rsync -avz /1997sty --exclude=/1997sty/b/1.txt --exclude=/1997sty/c/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
以文件排除方式
vi /1997sty/exclude.txt
exclude.txt
b/1.txt
c/
使用--exclude-from
rsync -avz /1997sty --exclude-from=exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
守护进程来创建备份目录
只能创建下一级目录,不可以创建多级目录
[root@nfs01 /]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/10.0.0.31/ --password-file=/etc/rsync.password
sending incremental file list
created directory 10.0.0.31
hosts
sent 226 bytes received 75 bytes 602.00 bytes/sec
total size is 371 speedup is 1.23
守护进程的访问控制配置
黑名单与白名单同时存在时,白名单优先
守护进程的列表功能配置
/etc/rsyncd.conf
中设置list = true
[root@nfs01 ~]# rsync rsync_backup@172.16.1.41::
backup "backup dir by 1997sty"
最后一次更新于2020-01-10 21:29
0 条评论