rsync 服务pull与push
//
rsync监听端口:873 rsync运行模式:C/S
既然需要备份,那么我们应该了解备份的方式 完全备份 增量备份 假设客户端上有file1 file2 file3文件,服务端上有file1文件, 现要将客户端上的数据备份至服务端
完全备份
将客户端所有的数据内容file1 file2 file3全部备份至服务端 (效率低下, 占用空间)
增量备份
将客户端的file2 file3增量备份至服务端 (提高备份效率,节省空间, 适合异地备份 )
# Rsync 应用场景
前面我们了解过备份的方式,下面我们需要了解Rync的数据同步模式
推: 所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)
拉: rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大
大量服务器备份场景
异地备份实现思路
# Rsync传输模式
Rsync使用三种主要的数据传输方式
本地方式
远程方式
守护进程
# 本地传输方式:
单个主机本地之间的数据传输(此时类似于cp命令)
#本地拷贝数据命令
Local: rsync [OPTION...] SRC... [DEST]
#本地拷贝数据示例
[root@backup ~]# rsync -avz /etc/passwd /tmp/
rsync #备份命令(cp)
[options] #选项
SRC... #本地源文件
[DEST] #本地目标文件
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 远程通道传输方式:
通过ssh通道传输数据,类似scp命令
#pull拉取数据命令
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
#pull拉取数据示例
[root@backup ~]# rsync -avz root@172.16.1.41:/etc/hostname ./ #拉取远程文件
[root@backup ~]# rsync -avz root@172.16.1.41:/root/ /backup/ #拉取远程目录下的所有文件
[root@backup ~]# rsync -avz root@172.16.1.41:/root /backup/ #拉取远程目录以及目录下的所有文件
Pull #拉取, 下载
rsync #备份命令
[options] #选项
[USER@] #目标主机的系统用户
HOST #目主机IP地址或域名
SRC... #目标主机源文件
[DEST] #下载至本地哪个位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Rsync借助SSH协议同步数据存在的缺陷
1.使用系统用户(不安全)
2.使用普通用户(会导致权限不足情况)
3.守护进程传输方式: rsync自身非常重要的功能(不使用系统用户,更加安全)
1
2
3
2
3
# 安装
yum -y install rsync
# rsync服务守护进程
/etc/rsync.conf 配置
uid = root
gid = root
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
pid file = /var/run/rsyncd.pid
address = 192.168.0.10
hosts allow = 192.168.0.13,192.168.108.179
hosts deny = *
[backup]
comment = im rsync update dir
path = /data/backup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
服务端配置,虚拟用户密码文件,文件权限 600
# cat /etc/rsync.passwd
rsync_backup:yfk123456
# chmod 0600 /etc/rsync.passwd
1
2
3
4
2
3
4
- 客服端常用参数组合命令 *
# rsync -avzP --progress --delete /opt/data rsync_backup@192.168.0.10::backup --password-file=/etc/rsync.pass
# cat /etc/rsync.pass
yfk123456
1
2
3
4
2
3
4
# pull 和push
# pull拉取数据命令
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
#1.拉取rsync备份服务的"backup模块"数据至本地/mnt目录
[root@nfs01 ~]# rsync -avz rsync_backup@192.172.16.1.41::backup/ /mnt/ --password-file=/etc/rsync.password
rsync #命令
[OPTION...] #选项
[USER@] #远程主机用户(虚拟用户)
HOST:: #远程主机地址
SRC... #远程主机模块(不是目录)
[DEST] #将远程主机数据备份至本地什么位置
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# push推送数据命令
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
1
# 本地目录,推送到本地目录
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
#push推送数据示例
rsync -avz /data/wwwroot/data/ /backup/2018-10-01
Push #推送, 上传
rsync #备份命令
[options] #选项
SRC... #本地源文件
[USER@] #目标主机的系统用户
HOST #目主机IP地址或域名
[DEST] #目标对应位置
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 将本地/mnt目录推送至rsync备份服务器的backup模块
[root@nfs01 ~]# rsync -avz /mnt/ rsync_backup@192.172.16.1.41::backup/ --password-file=/etc/rsync.password
rsync #命令
[OPTION...] #选项
SRC... #远程主机模块(不是目录)
[USER@] #远程主机用户(虚拟用户)
HOST:: #远程主机地址
[DEST] #将远程主机模块备份至本地什么位置
1
2
3
4
5
6
7
2
3
4
5
6
7
# Rsync命令对应选项
-a#归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l#保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e#使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100#限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# rsync常用推送拉起案例
# 客户端推送backup目录下所有内容至Rsync服务端
[root@nfs01 ~]# export RSYNC_PASSWORD=yfk
[root@nfs01 ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::back
1
2
2
# 客户端拉取Rsync服务端backup模块数据
[root@nfs01 ~]# export RSYNC_PASSWORD=yfk
[root@nfs01 ~]#rsync -avz rsync_backup@172.16.1.41::backup /backup/
1
2
3
2
3
# Rsync实现数据无差异同步
远端与本地保持一致,远端没有本地有会被删除, 造成客户端数据丢失
[root@nfs01 ~]# export RSYNC_PASSWORD=yfk
[root@nfs01 ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup/ /data/
1
2
3
2
3
# Rsync的Limit限速
使用rsync拉取备份数据时,由于文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应
[root@nfs01 ~]# export RSYNC_PASSWORD=yfk
[root@nfs01 ~]# rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup/ /data/
1
2
3
2
3
# 服务端配置邮件功能
[root@backup /]# yum install mailx -y
[root@backup /]# vim /etc/mail.rc
set from=122814556@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1228145560@qq.com
set smtp-auth-password=#客户端授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
参考博客:oldboy
//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2021/09/30, 15:40:52