一、什么是rsync?
rsync:remote synchronization
rsync是开源、高速、可实现本都及远程,全量以及增量的数据复制(拷贝)工具。
官方链接资料:http://www.samba.org/ftp/rsync/rsync.html
二、全量和增量区别
1、全量复制
[root@nfs01 ~]# cp -a /etc/ /opt/
[root@nfs01 ~]# \cp -a /etc/ /opt
[root@nfs01 ~]# touch /etc/oldboy.txt
[root@nfs01 ~]# \cp -a /etc/ /opt/
2、增量复制:
只复制 ldboy.txt
三、rsync的作用
工作中需要数据备份。
需要本地服务器目录、不同机器、不同机房之间的数据备份,都可以rsync完成。
四、rsync功能特性
1、支持拷贝普通文件与特殊文件,如链接文件、设备文件等。
2、支持排除指定文件或目录同步功能,相当于打包命令tar的排除功能。
3、可以做到保持原文件或目录的权限、时间、软硬连接、属主/组等所有属性均不改变。
4、可实现增量复制,即只复制发生变化的数据,因此数据传输效率很高。
5、可以使用rcp,rsh,ssh等方式来配合进行隧道加密输出文件,(rsync本身不对数据加密)。
6、可以通过scoket(进程方式)传输文件和数据(服务端和客户端)。
7、支持匿名或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像。
五、增量复制原理
使用quick check算法,只对增量的部分复制,根据大小属性的变化进行复制。
2.x比对差异后复制,3.x一边比对一边复制。
六、rsync三种工作模式
1、本地 local
rsync 就是一个命令
语法: rsync 参数选项 源文件或目录 目的目录或文件
参数:
-v --verbose 详细模式输出,传输时的进度等信息
-z --compress 传输时进行压缩以提高传输效率,--compress-level=NMU 可按级别压缩,局域网可以不用压缩。
-a --archive 归档模式,表示以递归方式传输文件,并表示文件的属性,-a = -rtopgDl
-r --recursive 递归拷贝目录
-l --links 保留软连接
-p --perm 保持文件权限
-t --times 保持文件时间信息(修改时间)
-g --group 保持文件属组信息
-o --owner 保持文件属主信息
-e --rsh=COMMAND 指定要执行的远程shell命令,
-R --relative 保留相对路径信息
-H --hard-links 保留硬链接
-q --quiet 以精简模式输出
--bwlmit=KBPS 限制I/O带宽,KB/S
--delete 删除
--exclude 排除
--exclude-from 从文件中排除
企业中常用参数组合:-azv或者-vztopg
1)把数据从一个地方复制到另一个地方(仅在一台机器增量),相当于cp。
2)通过加参数实现删除的功能,相当于rm命令。
删除文件内容
删除目录
3)查看属性信息功能,相当于ls-l
2、远程shell模式
借助类似ssh隧道传输数据,适合不同的机器之间的复制。
异地拷贝,相当于scp,区别scp是远程全量拷贝。
pull:拉:从远端拉取到本地。
语法: rsync 参数选项 认证用户@主机地址:源路径 本地路径
rsync -avz -e "ssh -p 22" [email protected]:/opt/hosts /opt
-e 指定通道
ssh shh服务连接客户端
-p 22 指定端口为22
push:推:从本地推到远端。
语法: rsync 参数选项 本地路径 认证用户@主机地址:目标路径
推拉:
1)参照物,执行命令的机器
2)[email protected] 使用的用户和主机,就用主机和用户的密码
强调:只适合rsync
null和null/的区别:
null 是目录和目录下的内容
null/只表示目录下的内容,不含本身
3、rsync守护进程模式*****
首先要搭建rsync服务端(要有守护进程),然后才能在客户端实现推拉数据。
企业运维的重要模式。
rsync服务模式:开启后台进程,接收别人访问。*****
七、rsync参数
-v --verbose 详细模式输出,传输是的进度等信息
-z --compress 传输时进行压缩以提高传输效率,--compress-level=NMU 可按级别压缩,局域网可以不用压缩。
-a --archive 归档模式,表示以递归方式传输文件,并表示文件的属性,-a = -rtopgDl
-r --recursive 递归拷贝目录
-l --links 保留软连接
-p --perm 保持文件权限
-t --times 保持文件时间信息(修改时间)
-g --group 保持文件属组信息
-o --owner 保持文件属主信息
-e --rsh=COMMAND 指定要执行的远程shell命令,
-R --relative 保留相对路径信息
-H --hard-links 保留硬链接
-q --quiet 以精简模式输出
--bwlmit=KBPS 限制I/O带宽,KB/S
--delete 删除
--exclude 排除
--exclude-from 从文件中排除
企业中常用参数组合:-azv或者-vztopg
八、rsync守护进程模式应用实践*****
1、以下操作都是在backup服务器上
1)安装rsync
yum install rsync -y
rsync --version 查看版本号
2)配置 配置文件 /etc/rsyncd.conf
操作前先备份: cp /etc/rsyncd.conf{,.ori}
cat>/etc/rsyncd.conf< #rsync_config_______________start #created by oldboy #site: http://www.oldboyedu.com uid = rsync ===>管理备份目录的用户 gid = rsync ===>管理备份目录的用户组 use chroot = no ===>安全功能,数据是否锁定到备份目录 max connections = 200 ===>并发连接,同时最多多少客户端访问 timeout = 600 ===>超时时间 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 ===>允许哪些主机访问 hosts deny = 0.0.0.0/32 ===>不允许哪些主机访问 auth users = rsync_backup ===>远程虚拟连接用户 secrets file = /etc/rsync.password===>存放密码的文件,格式:用户名:密码,权限必须为:600 [backup] ===>模块名,远程访问,使用模块名访问 comment = welcome to oldboyedu backup! ===>说明注释 path = /backup/ ===>服务端用户备份的目录,用户和组, rsync:rsync EOF 3)启动和检查 rsync --daemon(C6及以前) systemctl status rsync 查看状态 systemctl start rsync 开启服务 systemctl enable rsync 开机自启 检查进程 检查端口 4)配置密码文件 到此为止服务器端配置完成。 配置服务器端守护进程,实现数据传输: 1)服务器端守护进程 2)客户端执行命令 pull:拉 从远端拉取到本地 语法: rsync 参数选项 虚拟用户@主机地址::模块名 本地路径 rsync 参数选项 rsync://虚拟用户@主机地址/模块名 本地路径 push:推 从本地推送到远端 语法: rsync 参数选项 本地路径 虚拟用户@主机地址::模块名 rsync 参数选项 本地路径 rsync://虚拟用户@主机地址/模块名 rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password创建用户rsync
2、以下操作是在客户端服务器完成
3、守护进程模式,客户端rsync的命令语法
4、测试结果