文章目录
- 1.rsync程序介绍
- 2.如何实现的增量传输数据
- 3.rsync的四个程序功能
- —3.1 rsync == cp
- —3.2 rsync == scp(远程备份)
- —3.3 rsync == rm
- —3.4 rsync == ls
- 4. rsync命令的工作模式
- —4.1 本地备份数据 cp
- —4.2 远程备份数据 scp
- —4.3 守护进程方式远程备份数据:(推荐)
- ——4.3.1 作用
- ——4.3.2 模式
- 5. rsync服务守护进程方式部署流程
- —5.1 rsync服务端(rsync服务进程)
- ——5.1.1 第一个历程: 安装部署软件
- ——5.1.2 第二个历程: 编写配置文件
- ——5.1.3 第三个历程: 创建一个rsync虚拟用户
- ——5.1.4 第四个历程: 创建备份目录更改属主属组
- ——5.1.5 第五个历程: 创建认证密码文件
- ——5.1.6 第六个历程: 启动rsync服务
- —5.2 rsync客户端传输测试
- —5.3 rsync守护进程模式传输数据原理
- 6. 如何实现免交互传输数据
- 7.rsync命令参数说明
- 8. 实现备份数据排除功能(过滤)
- 9. 实现无差异同步
- 10.实现存储数据访问控制
- 11. 模块列表功能
- 12.备份目录层级创建功能
- 13 多模块应用
- —13.1 配置文件参数局部和全局配置
- —13.2 测试各模块备份情况
- —13.3 多模块备份结论
- 14 企业应用
1.rsync程序介绍
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。恢复,对比配置信息的作用。
通过 “quick check”算法,仅同步大小或者最后修改时间,权限,属主等属性发生变化的文件或目录。
2.如何实现的增量传输数据
1) 利用rsync程序算法(判断数据属性信息是否一致), 判断不同主机上的数据是否一致
[root@backup01 ~]# ll /etc/hosts
-rw-r--r-- 1 root root 311 May 20 16:14 /etc/hosts
[root@backup01 ~]# echo 1 >> /etc/hosts
[root@backup01 ~]# ll /etc/hosts
-rw-r--r-- 1 root root 313 May 20 16:14 /etc/hosts
2) 利用rsync程序算法(判断文件md5数值是否一致), 判断不同主机上的数据是否一致
[root@backup01 ~]# md5sum /etc/hosts
ae60b343c62ed776edfec06806b957f0 /etc/hosts
[root@backup01 ~]# echo 1 >> /etc/hosts
[root@backup01 ~]# md5sum /etc/hosts
197c12661c194afc649dee77f530ccd4 /etc/hosts
3.rsync的四个程序功能
—3.1 rsync == cp
[root@backup ~]# cp -a /etc/hosts /tmp/cp_hosts
[root@backup ~]# ll /tmp/cp_hosts
-rw-r--r-- 1 root root 375 Feb 21 17:17 /tmp/cp_hosts
[root@backup ~]# rsync -a /etc/hosts /tmp/rsync_hosts
[root@backup ~]# ll /tmp/rsync_hosts
-rw-r--r-- 1 root root 375 Feb 21 17:17 /tmp/rsync_hosts
[root@backup ~]# md5sum /tmp/cp_hosts
128f8c89e281b88e82ccf7ba49ad3963 /tmp/cp_hosts
[root@backup ~]# md5sum /tmp/rsync_hosts
128f8c89e281b88e82ccf7ba49ad3963 /tmp/rsync_hosts
—3.2 rsync == scp(远程备份)
scp -rp /etc/sysconfig/ 172.16.1.31:/tmp/
scp -rp /etc/sysconfig/ oldboy@172.16.1.31:/tmp/
rsync -rp /oldboy_dir/ 172.16.1.31:/tmp/
利用rsync传输目录时:
传输的目录后面如果存在/(/oldboy_dir/) 表示将目录下面的数据内容进行全部传输
传输的目录后面如果不存在/(/oldboy_dir) 表示将目录本身和目录下面的数据内容进行全部传输
—3.3 rsync == rm
[root@backup ~]# mkdir /null
[root@backup ~]# ll /null/
total 0
[root@backup ~]# rsync -rp --delete /null/ 172.16.1.31:/tmp/
root@172.16.1.31's password:
--delete : 无差异同步--我有什么,你也有什么;我没有什么,你也不能有
实现不同主机之间数据高度一致
—3.4 rsync == ls
[root@nfs01 tmp]# ls /tmp/
oldboy.txt
[root@nfs01 tmp]# rsync /tmp/
drwxr-xr-x 24 2019/02/21 17:42:52 .
-rw-r--r-- 0 2019/02/21 17:41:46 oldboy.txt
4. rsync命令的工作模式
—4.1 本地备份数据 cp
Local: rsync [OPTION...] SRC... [DEST]
src: 要备份的数据信息
DEST: 将数据存储在什么位置
—4.2 远程备份数据 scp
1) 利用rsync程序算法(判断数据属性信息是否一致), 判断不同主机上的数据是否一致 [root@backup01 ~]# ll /etc/hosts -rw-r--r-- 1 root root 311 May 20 16:14 /etc/hosts [root@backup01 ~]# echo 1 >> /etc/hosts [root@backup01 ~]# ll /etc/hosts -rw-r--r-- 1 root root 313 May 20 16:14 /etc/hosts 2) 利用rsync程序算法(判断文件md5数值是否一致), 判断不同主机上的数据是否一致 [root@backup01 ~]# md5sum /etc/hosts ae60b343c62ed776edfec06806b957f0 /etc/hosts [root@backup01 ~]# echo 1 >> /etc/hosts [root@backup01 ~]# md5sum /etc/hosts 197c12661c194afc649dee77f530ccd4 /etc/hosts
3.rsync的四个程序功能
—3.1 rsync == cp
[root@backup ~]# cp -a /etc/hosts /tmp/cp_hosts
[root@backup ~]# ll /tmp/cp_hosts
-rw-r--r-- 1 root root 375 Feb 21 17:17 /tmp/cp_hosts
[root@backup ~]# rsync -a /etc/hosts /tmp/rsync_hosts
[root@backup ~]# ll /tmp/rsync_hosts
-rw-r--r-- 1 root root 375 Feb 21 17:17 /tmp/rsync_hosts
[root@backup ~]# md5sum /tmp/cp_hosts
128f8c89e281b88e82ccf7ba49ad3963 /tmp/cp_hosts
[root@backup ~]# md5sum /tmp/rsync_hosts
128f8c89e281b88e82ccf7ba49ad3963 /tmp/rsync_hosts
—3.2 rsync == scp(远程备份)
scp -rp /etc/sysconfig/ 172.16.1.31:/tmp/
scp -rp /etc/sysconfig/ oldboy@172.16.1.31:/tmp/
rsync -rp /oldboy_dir/ 172.16.1.31:/tmp/
利用rsync传输目录时:
传输的目录后面如果存在/(/oldboy_dir/) 表示将目录下面的数据内容进行全部传输
传输的目录后面如果不存在/(/oldboy_dir) 表示将目录本身和目录下面的数据内容进行全部传输
—3.3 rsync == rm
[root@backup ~]# mkdir /null
[root@backup ~]# ll /null/
total 0
[root@backup ~]# rsync -rp --delete /null/ 172.16.1.31:/tmp/
root@172.16.1.31's password:
--delete : 无差异同步--我有什么,你也有什么;我没有什么,你也不能有
实现不同主机之间数据高度一致
—3.4 rsync == ls
[root@nfs01 tmp]# ls /tmp/
oldboy.txt
[root@nfs01 tmp]# rsync /tmp/
drwxr-xr-x 24 2019/02/21 17:42:52 .
-rw-r--r-- 0 2019/02/21 17:41:46 oldboy.txt
4. rsync命令的工作模式
—4.1 本地备份数据 cp
Local: rsync [OPTION...] SRC... [DEST]
src: 要备份的数据信息
DEST: 将数据存储在什么位置
—4.2 远程备份数据 scp
—4.1 本地备份数据 cp
Local: rsync [OPTION...] SRC... [DEST] src: 要备份的数据信息 DEST: 将数据存储在什么位置
—4.2 远程备份数据 scp
Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] -- 下载 [USER@] -- 指定以什么用户身份传输数据 HOST -- 指定远程主机IP地址或者主机名称 SRC -- 远程主机上要进行下载的数据信息 DEST -- 将远程主机信息保存到本地主机的什么路径中 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST -- 上传 SRC -- 本地主机上要进行上传的数据信息 DEST -- 将本地主机信息保存到远程主机的什么路径中
—4.3 守护进程方式远程备份数据:(推荐)
——4.3.1 作用
01. 可以控制传输的连接数量(同一时刻)
02. 可以实现免交互方式进行传输数据
03. 具有单独的传输认证进制
——4.3.2 模式
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] -- 下载
[USER@] -- 指定一个认证用户信息
HOST -- 指定远程主机IP地址或者主机名称
SRC -- 远程主机上要进行下载的模块信息
DEST -- 将远程主机信息保存到本地主机的什么路径中
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST -- 上传
SRC -- 本地主机上要进行上传的数据信息
[USER@] -- 指定一个认证用户信息
HOST -- 指定远程主机IP地址或者主机名称
DEST -- 将本地主机信息保存到远程主机的什么模块信息
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
5. rsync服务守护进程方式部署流程
—5.1 rsync服务端(rsync服务进程)
——5.1.1 第一个历程: 安装部署软件
[root@backup ~]# rpm -qa rsync
rsync-3.1.2-4.el7.x86_64
——5.1.2 第二个历程: 编写配置文件
PS: 只要是一个守护进程服务, 都会存在配置文件
vim /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start## -- 注释信息
uid = rsync -- 管理备份目录(属主信息是rsync)
gid = rsync -- 管理备份目录(属组信息是rsync)
port = 873 -- 守护进程服务端口信息
fake super = yes -- 伪装为超级用户
use chroot = no -- 安全的配置
max connections = 200 -- 同时可以有多少客户端连接rsync服务器
timeout = 300 -- 超时时间,显示空闲连接存活时间
pid file = /var/run/rsyncd.pid --- 保存进程pid号码信息
lock file = /var/run/rsync.lock --- 真正的限制同时的连接数
log file = /var/log/rsyncd.log --- rsync程序日志文件
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 --- 认证用户密码文件(信息:rsync_backup:oldboy123)
[backup] --- 模块信息
comment = "backup dir by oldboy" --- 模块注释说明信息
path = /backup --- 定义一个备份目录
===========================================
[root@backup01 ~]# systemctl start rsyncd
[root@backup01 ~]# ps -ef|grep rsync
root 1596 1 0 16:04 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 1598 1539 0 16:04 pts/0 00:00:00 grep --color=auto rsync
[root@backup01 ~]# ll /var/run/rsyncd.pid
-rw-r--r-- 1 root root 5 May 26 16:04 /var/run/rsyncd.pid
[root@backup01 ~]# cat /var/run/rsyncd.pid
1596
[root@backup01 ~]# kill `cat /var/run/rsyncd.pid`
——5.1.3 第三个历程: 创建一个rsync虚拟用户
[root@backup01 ~]#useradd -s /sbin/nologin -M rsync
——5.1.4 第四个历程: 创建备份目录更改属主属组
[root@backup01 ~]#mkdir /backup
[root@backup01 ~]#chown rsync.rsync /backup
——5.1.5 第五个历程: 创建认证密码文件
[root@backup01 ~]#echo "rsync_backup:oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
——5.1.6 第六个历程: 启动rsync服务
[root@backup01 ~]#systemctl start rsyncd
[root@backup01 ~]#systemctl enable rsyncd
—5.2 rsync客户端传输测试
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.XuzZ6k" (in backup) failed: Permission denied (13)权限拒绝
sent 227 bytes received 121 bytes 21.09 bytes/sec
total size is 371 speedup is 1.07
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
—5.3 rsync守护进程模式传输数据原理
Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] -- 下载 [USER@] -- 指定一个认证用户信息 HOST -- 指定远程主机IP地址或者主机名称 SRC -- 远程主机上要进行下载的模块信息 DEST -- 将远程主机信息保存到本地主机的什么路径中 rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST -- 上传 SRC -- 本地主机上要进行上传的数据信息 [USER@] -- 指定一个认证用户信息 HOST -- 指定远程主机IP地址或者主机名称 DEST -- 将本地主机信息保存到远程主机的什么模块信息 rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
5. rsync服务守护进程方式部署流程
—5.1 rsync服务端(rsync服务进程)
——5.1.1 第一个历程: 安装部署软件
[root@backup ~]# rpm -qa rsync
rsync-3.1.2-4.el7.x86_64
——5.1.2 第二个历程: 编写配置文件
PS: 只要是一个守护进程服务, 都会存在配置文件
vim /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start## -- 注释信息
uid = rsync -- 管理备份目录(属主信息是rsync)
gid = rsync -- 管理备份目录(属组信息是rsync)
port = 873 -- 守护进程服务端口信息
fake super = yes -- 伪装为超级用户
use chroot = no -- 安全的配置
max connections = 200 -- 同时可以有多少客户端连接rsync服务器
timeout = 300 -- 超时时间,显示空闲连接存活时间
pid file = /var/run/rsyncd.pid --- 保存进程pid号码信息
lock file = /var/run/rsync.lock --- 真正的限制同时的连接数
log file = /var/log/rsyncd.log --- rsync程序日志文件
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 --- 认证用户密码文件(信息:rsync_backup:oldboy123)
[backup] --- 模块信息
comment = "backup dir by oldboy" --- 模块注释说明信息
path = /backup --- 定义一个备份目录
===========================================
[root@backup01 ~]# systemctl start rsyncd
[root@backup01 ~]# ps -ef|grep rsync
root 1596 1 0 16:04 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 1598 1539 0 16:04 pts/0 00:00:00 grep --color=auto rsync
[root@backup01 ~]# ll /var/run/rsyncd.pid
-rw-r--r-- 1 root root 5 May 26 16:04 /var/run/rsyncd.pid
[root@backup01 ~]# cat /var/run/rsyncd.pid
1596
[root@backup01 ~]# kill `cat /var/run/rsyncd.pid`
——5.1.3 第三个历程: 创建一个rsync虚拟用户
[root@backup01 ~]#useradd -s /sbin/nologin -M rsync
——5.1.4 第四个历程: 创建备份目录更改属主属组
[root@backup01 ~]#mkdir /backup
[root@backup01 ~]#chown rsync.rsync /backup
——5.1.5 第五个历程: 创建认证密码文件
[root@backup01 ~]#echo "rsync_backup:oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
——5.1.6 第六个历程: 启动rsync服务
[root@backup01 ~]#systemctl start rsyncd
[root@backup01 ~]#systemctl enable rsyncd
—5.2 rsync客户端传输测试
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.XuzZ6k" (in backup) failed: Permission denied (13)权限拒绝
sent 227 bytes received 121 bytes 21.09 bytes/sec
total size is 371 speedup is 1.07
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
—5.3 rsync守护进程模式传输数据原理
[root@backup ~]# rpm -qa rsync rsync-3.1.2-4.el7.x86_64
——5.1.2 第二个历程: 编写配置文件
PS: 只要是一个守护进程服务, 都会存在配置文件
vim /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start## -- 注释信息
uid = rsync -- 管理备份目录(属主信息是rsync)
gid = rsync -- 管理备份目录(属组信息是rsync)
port = 873 -- 守护进程服务端口信息
fake super = yes -- 伪装为超级用户
use chroot = no -- 安全的配置
max connections = 200 -- 同时可以有多少客户端连接rsync服务器
timeout = 300 -- 超时时间,显示空闲连接存活时间
pid file = /var/run/rsyncd.pid --- 保存进程pid号码信息
lock file = /var/run/rsync.lock --- 真正的限制同时的连接数
log file = /var/log/rsyncd.log --- rsync程序日志文件
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 --- 认证用户密码文件(信息:rsync_backup:oldboy123)
[backup] --- 模块信息
comment = "backup dir by oldboy" --- 模块注释说明信息
path = /backup --- 定义一个备份目录
===========================================
[root@backup01 ~]# systemctl start rsyncd
[root@backup01 ~]# ps -ef|grep rsync
root 1596 1 0 16:04 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 1598 1539 0 16:04 pts/0 00:00:00 grep --color=auto rsync
[root@backup01 ~]# ll /var/run/rsyncd.pid
-rw-r--r-- 1 root root 5 May 26 16:04 /var/run/rsyncd.pid
[root@backup01 ~]# cat /var/run/rsyncd.pid
1596
[root@backup01 ~]# kill `cat /var/run/rsyncd.pid`
——5.1.3 第三个历程: 创建一个rsync虚拟用户
[root@backup01 ~]#useradd -s /sbin/nologin -M rsync
——5.1.4 第四个历程: 创建备份目录更改属主属组
[root@backup01 ~]#mkdir /backup
[root@backup01 ~]#chown rsync.rsync /backup
——5.1.5 第五个历程: 创建认证密码文件
[root@backup01 ~]#echo "rsync_backup:oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
——5.1.6 第六个历程: 启动rsync服务
[root@backup01 ~]#systemctl start rsyncd
[root@backup01 ~]#systemctl enable rsyncd
—5.2 rsync客户端传输测试
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.XuzZ6k" (in backup) failed: Permission denied (13)权限拒绝
sent 227 bytes received 121 bytes 21.09 bytes/sec
total size is 371 speedup is 1.07
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
—5.3 rsync守护进程模式传输数据原理
[root@backup01 ~]#useradd -s /sbin/nologin -M rsync
——5.1.4 第四个历程: 创建备份目录更改属主属组
[root@backup01 ~]#mkdir /backup
[root@backup01 ~]#chown rsync.rsync /backup
——5.1.5 第五个历程: 创建认证密码文件
[root@backup01 ~]#echo "rsync_backup:oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
——5.1.6 第六个历程: 启动rsync服务
[root@backup01 ~]#systemctl start rsyncd
[root@backup01 ~]#systemctl enable rsyncd
—5.2 rsync客户端传输测试
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.XuzZ6k" (in backup) failed: Permission denied (13)权限拒绝
sent 227 bytes received 121 bytes 21.09 bytes/sec
total size is 371 speedup is 1.07
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
—5.3 rsync守护进程模式传输数据原理
[root@backup01 ~]#echo "rsync_backup:oldboy123" >/etc/rsync.password chmod 600 /etc/rsync.password
——5.1.6 第六个历程: 启动rsync服务
[root@backup01 ~]#systemctl start rsyncd
[root@backup01 ~]#systemctl enable rsyncd
—5.2 rsync客户端传输测试
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.XuzZ6k" (in backup) failed: Permission denied (13)权限拒绝
sent 227 bytes received 121 bytes 21.09 bytes/sec
total size is 371 speedup is 1.07
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
—5.3 rsync守护进程模式传输数据原理
(centos7 rsync - 3.1.2) a 在客户端执行守护进程备份数据命令 b 完成数据传输认证过程(用户名 密码信息) c 完成用户映射过程:将客户端用户--->服务端的rsync用户 d 完成传输文件属主属组信息的修改--->修改为rsync
6. 如何实现免交互传输数据
完成rsync的nfs客户端配置过程
第一个历程: 创建密码文件 修改密码文件权限为600
[root@nfs01 ~]# echo oldboy123 >/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
第二个历程: 进行传输测试
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
7.rsync命令参数说明
-v, --verbose --- 显示传输数据过程信息
-z, --compress --- 将传输数据进行压缩
-a, --archive --- 归档参数 -rtopgDl
-r, --recursive --- 递归传输数据
-t, --times --- 保持文件修改时间不变
-o, --owner --- 保持文件属主信息不变(在配置文件中uid设置为root用户)
-g, --group --- 保持文件属组信息不变(在配置文件中gid设置为root用户)
-p, --perms --- 保持文件权限不变
-D --- 保持设备文件信息不变
-l, --links --- 只传输链接文件,不会传输源文件中的内容 (bug)
-L, --- 不仅传输链接文件,也会传输源文件中的内容
-P, --progress --- 显示数据传输的进度信息
[root@nfs01 ~]# dd if=/dev/zero of=/tmp/1000M bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 4.2542 s, 246 MB/s
[root@nfs01 ~]# ll /tmp/1000M -h
-rw-r--r-- 1 root root 1000M Jun 7 20:42 /tmp/1000M
[root@nfs01 ~]# rsync -aPvz /tmp/1000M rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
1000M
1,048,576,000 100% 146.52MB/s 0:00:06 (xfr#1, to-chk=0/1)
sent 1,019,830 bytes received 43 bytes 119,985.06 bytes/sec
total size is 1,048,576,000 speedup is 1,028.14
8. 实现备份数据排除功能(过滤)
--exclude=PATTERN 注意: 排除数据信息要写上相对路径
--exclude-from=file 利用exclude-from参数排除数据信息时, 建议后面接绝对路径信息
准备环境:
[root@nfs01 tmp]# mkdir /oldboy/{01..03} -p
[root@nfs01 tmp]# touch /oldboy/{01..03}/{a..c}.txt
[root@nfs01 ~]# tree /oldboy/
/oldboy/
├── 01
│ ├── a.txt
│ ├── b.txt
│ └── c.txt
├── 02
│ ├── a.txt
│ ├── b.txt
│ └── c.txt
└── 03
├── a.txt
├── b.txt
└── c.txt
进行排除操作: 排除01目录都不传输 排除02目录c.txt文件不要传输
[root@nfs01 tmp]# rsync -avz /oldboy/ --exclude=01/ --exclude=02/c.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
02/
02/a.txt
02/b.txt
03/
03/a.txt
03/b.txt
03/c.txt
sent 375 bytes received 134 bytes 1,018.00 bytes/sec
total size is 0 speedup is 0.00
PS: 利用exclude-from参数排除数据信息时, 建议后面接绝对路径信息
[root@nfs01 ~]# vim /oldboy/exlude_file
01/
02/c.txt
[root@nfs01 oldboy]# rsync -avz /oldboy/ --exclude-from=/oldboy/exlude_file rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
02/
02/a.txt
02/b.txt
03/
03/a.txt
03/b.txt
03/c.txt
sent 375 bytes received 134 bytes 1,018.00 bytes/sec
total size is 0 speedup is 0.00
9. 实现无差异同步
--delete : 使客户端目录下的数据信息和备份服务端数据信息保持高度一致,
[root@nfs01 oldboy]# rsync -avz /oldboy/ --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
deleting 01/c.txt
deleting 01/b.txt
deleting 01/a.txt
deleting 01/
./
sent 235 bytes received 72 bytes 614.00 bytes/sec
total size is 25 speedup is 0.08
10.实现存储数据访问控制
理解rsync服务访问控制原理
白名单优先于黑名单
hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
第1种情况: 只有白名单 没有黑名单,默认阻止白名单以外的
hosts allow = 172.16.1.0/24 白名单
#hosts deny = 0.0.0.0/32 黑名单
第2种情况: 只有黑名单 没有白名单,默认阻止黑名单
#hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
第3种情况: 有黑名单也有白名单,默认阻止黑名单
hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
11. 模块列表功能
list = false 在客户端上可以显示服务端的所有模块信息
PS: 建议将此功能关闭
12.备份目录层级创建功能
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01
hosts
sent 227 bytes received 68 bytes 590.00 bytes/sec
total size is 371 speedup is 1.26
PS: 无法创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/03/04/ --password-file=/etc/rsync.password
sending incremental file list
rsync: mkdir "01/02/03/04" (in backup) failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(657) [Receiver=3.1.2]
PS: 已有目录可创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01/02
hosts
sent 227 bytes received 71 bytes 596.00 bytes/sec
total size is 371 speedup is 1.24
13 多模块应用
—13.1 配置文件参数局部和全局配置
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24,10.0.0.0/24
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup/
hosts allow = 172.16.1.0/24
[backup_dba]
comment = "backup dir by oldboy"
path = /backup_dba
—13.2 测试各模块备份情况
# 测试backup模块备份数据 (符合配置文件模块局部配置需求)
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 227 bytes received 43 bytes 540.00 bytes/sec
total size is 371 speedup is 1.37
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
# 测试backup_dba模块
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 45.33 bytes/sec
total size is 371 speedup is 5.46
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 136.00 bytes/sec
total size is 371 speedup is 5.46
—13.3 多模块备份结论
配置文件中
a 只有全局配置信息时, 所有模块都遵循全局配置
b 只有局部配置信息时, 局部配置只影响指定模块
c 全局配置和局部配置都有, 局部配置优先于全局配置
14 企业应用
网站内部人员数据备份场景:定时任务+rsync
网站外部人员数据备份场景:实时同步+rsync
-v, --verbose --- 显示传输数据过程信息 -z, --compress --- 将传输数据进行压缩 -a, --archive --- 归档参数 -rtopgDl -r, --recursive --- 递归传输数据 -t, --times --- 保持文件修改时间不变 -o, --owner --- 保持文件属主信息不变(在配置文件中uid设置为root用户) -g, --group --- 保持文件属组信息不变(在配置文件中gid设置为root用户) -p, --perms --- 保持文件权限不变 -D --- 保持设备文件信息不变 -l, --links --- 只传输链接文件,不会传输源文件中的内容 (bug) -L, --- 不仅传输链接文件,也会传输源文件中的内容 -P, --progress --- 显示数据传输的进度信息 [root@nfs01 ~]# dd if=/dev/zero of=/tmp/1000M bs=10M count=100 100+0 records in 100+0 records out 1048576000 bytes (1.0 GB) copied, 4.2542 s, 246 MB/s [root@nfs01 ~]# ll /tmp/1000M -h -rw-r--r-- 1 root root 1000M Jun 7 20:42 /tmp/1000M [root@nfs01 ~]# rsync -aPvz /tmp/1000M rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password sending incremental file list 1000M 1,048,576,000 100% 146.52MB/s 0:00:06 (xfr#1, to-chk=0/1) sent 1,019,830 bytes received 43 bytes 119,985.06 bytes/sec total size is 1,048,576,000 speedup is 1,028.14
8. 实现备份数据排除功能(过滤)
--exclude=PATTERN 注意: 排除数据信息要写上相对路径
--exclude-from=file 利用exclude-from参数排除数据信息时, 建议后面接绝对路径信息
准备环境:
[root@nfs01 tmp]# mkdir /oldboy/{01..03} -p
[root@nfs01 tmp]# touch /oldboy/{01..03}/{a..c}.txt
[root@nfs01 ~]# tree /oldboy/
/oldboy/
├── 01
│ ├── a.txt
│ ├── b.txt
│ └── c.txt
├── 02
│ ├── a.txt
│ ├── b.txt
│ └── c.txt
└── 03
├── a.txt
├── b.txt
└── c.txt
进行排除操作: 排除01目录都不传输 排除02目录c.txt文件不要传输
[root@nfs01 tmp]# rsync -avz /oldboy/ --exclude=01/ --exclude=02/c.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
02/
02/a.txt
02/b.txt
03/
03/a.txt
03/b.txt
03/c.txt
sent 375 bytes received 134 bytes 1,018.00 bytes/sec
total size is 0 speedup is 0.00
PS: 利用exclude-from参数排除数据信息时, 建议后面接绝对路径信息
[root@nfs01 ~]# vim /oldboy/exlude_file
01/
02/c.txt
[root@nfs01 oldboy]# rsync -avz /oldboy/ --exclude-from=/oldboy/exlude_file rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
02/
02/a.txt
02/b.txt
03/
03/a.txt
03/b.txt
03/c.txt
sent 375 bytes received 134 bytes 1,018.00 bytes/sec
total size is 0 speedup is 0.00
9. 实现无差异同步
--delete : 使客户端目录下的数据信息和备份服务端数据信息保持高度一致,
[root@nfs01 oldboy]# rsync -avz /oldboy/ --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
deleting 01/c.txt
deleting 01/b.txt
deleting 01/a.txt
deleting 01/
./
sent 235 bytes received 72 bytes 614.00 bytes/sec
total size is 25 speedup is 0.08
10.实现存储数据访问控制
理解rsync服务访问控制原理
白名单优先于黑名单
hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
第1种情况: 只有白名单 没有黑名单,默认阻止白名单以外的
hosts allow = 172.16.1.0/24 白名单
#hosts deny = 0.0.0.0/32 黑名单
第2种情况: 只有黑名单 没有白名单,默认阻止黑名单
#hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
第3种情况: 有黑名单也有白名单,默认阻止黑名单
hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
11. 模块列表功能
list = false 在客户端上可以显示服务端的所有模块信息
PS: 建议将此功能关闭
12.备份目录层级创建功能
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01
hosts
sent 227 bytes received 68 bytes 590.00 bytes/sec
total size is 371 speedup is 1.26
PS: 无法创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/03/04/ --password-file=/etc/rsync.password
sending incremental file list
rsync: mkdir "01/02/03/04" (in backup) failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(657) [Receiver=3.1.2]
PS: 已有目录可创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01/02
hosts
sent 227 bytes received 71 bytes 596.00 bytes/sec
total size is 371 speedup is 1.24
13 多模块应用
—13.1 配置文件参数局部和全局配置
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24,10.0.0.0/24
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup/
hosts allow = 172.16.1.0/24
[backup_dba]
comment = "backup dir by oldboy"
path = /backup_dba
—13.2 测试各模块备份情况
# 测试backup模块备份数据 (符合配置文件模块局部配置需求)
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 227 bytes received 43 bytes 540.00 bytes/sec
total size is 371 speedup is 1.37
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
# 测试backup_dba模块
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 45.33 bytes/sec
total size is 371 speedup is 5.46
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 136.00 bytes/sec
total size is 371 speedup is 5.46
—13.3 多模块备份结论
配置文件中
a 只有全局配置信息时, 所有模块都遵循全局配置
b 只有局部配置信息时, 局部配置只影响指定模块
c 全局配置和局部配置都有, 局部配置优先于全局配置
14 企业应用
网站内部人员数据备份场景:定时任务+rsync
网站外部人员数据备份场景:实时同步+rsync
--delete : 使客户端目录下的数据信息和备份服务端数据信息保持高度一致, [root@nfs01 oldboy]# rsync -avz /oldboy/ --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password sending incremental file list deleting 01/c.txt deleting 01/b.txt deleting 01/a.txt deleting 01/ ./ sent 235 bytes received 72 bytes 614.00 bytes/sec total size is 25 speedup is 0.08
10.实现存储数据访问控制
理解rsync服务访问控制原理
白名单优先于黑名单
hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
第1种情况: 只有白名单 没有黑名单,默认阻止白名单以外的
hosts allow = 172.16.1.0/24 白名单
#hosts deny = 0.0.0.0/32 黑名单
第2种情况: 只有黑名单 没有白名单,默认阻止黑名单
#hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
第3种情况: 有黑名单也有白名单,默认阻止黑名单
hosts allow = 172.16.1.0/24 白名单
hosts deny = 0.0.0.0/32 黑名单
11. 模块列表功能
list = false 在客户端上可以显示服务端的所有模块信息
PS: 建议将此功能关闭
12.备份目录层级创建功能
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01
hosts
sent 227 bytes received 68 bytes 590.00 bytes/sec
total size is 371 speedup is 1.26
PS: 无法创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/03/04/ --password-file=/etc/rsync.password
sending incremental file list
rsync: mkdir "01/02/03/04" (in backup) failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(657) [Receiver=3.1.2]
PS: 已有目录可创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01/02
hosts
sent 227 bytes received 71 bytes 596.00 bytes/sec
total size is 371 speedup is 1.24
13 多模块应用
—13.1 配置文件参数局部和全局配置
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24,10.0.0.0/24
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup/
hosts allow = 172.16.1.0/24
[backup_dba]
comment = "backup dir by oldboy"
path = /backup_dba
—13.2 测试各模块备份情况
# 测试backup模块备份数据 (符合配置文件模块局部配置需求)
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 227 bytes received 43 bytes 540.00 bytes/sec
total size is 371 speedup is 1.37
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
# 测试backup_dba模块
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 45.33 bytes/sec
total size is 371 speedup is 5.46
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 136.00 bytes/sec
total size is 371 speedup is 5.46
—13.3 多模块备份结论
配置文件中
a 只有全局配置信息时, 所有模块都遵循全局配置
b 只有局部配置信息时, 局部配置只影响指定模块
c 全局配置和局部配置都有, 局部配置优先于全局配置
14 企业应用
网站内部人员数据备份场景:定时任务+rsync
网站外部人员数据备份场景:实时同步+rsync
list = false 在客户端上可以显示服务端的所有模块信息 PS: 建议将此功能关闭
12.备份目录层级创建功能
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01
hosts
sent 227 bytes received 68 bytes 590.00 bytes/sec
total size is 371 speedup is 1.26
PS: 无法创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/03/04/ --password-file=/etc/rsync.password
sending incremental file list
rsync: mkdir "01/02/03/04" (in backup) failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(657) [Receiver=3.1.2]
PS: 已有目录可创建多级目录
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/01/02/ --password-file=/etc/rsync.password
sending incremental file list
created directory 01/02
hosts
sent 227 bytes received 71 bytes 596.00 bytes/sec
total size is 371 speedup is 1.24
13 多模块应用
—13.1 配置文件参数局部和全局配置
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24,10.0.0.0/24
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup/
hosts allow = 172.16.1.0/24
[backup_dba]
comment = "backup dir by oldboy"
path = /backup_dba
—13.2 测试各模块备份情况
# 测试backup模块备份数据 (符合配置文件模块局部配置需求)
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 227 bytes received 43 bytes 540.00 bytes/sec
total size is 371 speedup is 1.37
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
# 测试backup_dba模块
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 45.33 bytes/sec
total size is 371 speedup is 5.46
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup_dba --password-file=/etc/rsync.password
sending incremental file list
sent 48 bytes received 20 bytes 136.00 bytes/sec
total size is 371 speedup is 5.46
—13.3 多模块备份结论
配置文件中
a 只有全局配置信息时, 所有模块都遵循全局配置
b 只有局部配置信息时, 局部配置只影响指定模块
c 全局配置和局部配置都有, 局部配置优先于全局配置
14 企业应用
网站内部人员数据备份场景:定时任务+rsync
网站外部人员数据备份场景:实时同步+rsync
—13.1 配置文件参数局部和全局配置
uid = rsync gid = rsync port = 873 fake super = yes use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 172.16.1.0/24,10.0.0.0/24 auth users = rsync_backup secrets file = /etc/rsync.password [backup] comment = "backup dir by oldboy" path = /backup/ hosts allow = 172.16.1.0/24 [backup_dba] comment = "backup dir by oldboy" path = /backup_dba
—13.2 测试各模块备份情况
# 测试backup模块备份数据 (符合配置文件模块局部配置需求) [root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password sending incremental file list hosts sent 227 bytes received 43 bytes 540.00 bytes/sec total size is 371 speedup is 1.37 [root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password @ERROR: Unknown module 'backup' rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2] # 测试backup_dba模块 [root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup_dba --password-file=/etc/rsync.password sending incremental file list sent 48 bytes received 20 bytes 45.33 bytes/sec total size is 371 speedup is 5.46 [root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup_dba --password-file=/etc/rsync.password sending incremental file list sent 48 bytes received 20 bytes 136.00 bytes/sec total size is 371 speedup is 5.46
—13.3 多模块备份结论
配置文件中 a 只有全局配置信息时, 所有模块都遵循全局配置 b 只有局部配置信息时, 局部配置只影响指定模块 c 全局配置和局部配置都有, 局部配置优先于全局配置