Rsync基本概述
Rsync是一款优秀的工具,开源、快速、多功能,可以实现本地或远程数据的完全和增量同步备份。Rsync软件适用于Unix/linux/Windows等操作系统平台。
Rsync简介
Rsync在英语中被称为远程同步。从软件名称可以看出,rsync具有本地主机和远程主机之间数据的快速复制、同步镜像和远程备份功能。这个功能类似于ssh的scp命令,但是优于scp命令。scp每次都是完整拷贝,而rsync可以进行增量拷贝。当然,rsync也可以在本地主机的不同分区或目录之间完整地复制数据,类似于cp命令。不过也优于cp命令。cp每次都是完整拷贝,而rsync可以进行增量拷贝。
同步数据时,默认情况下,rsync使用其独特的“快速检查”算法,该算法仅同步大小或上次修改时间已更改的文件或目录。当然,它也可以根据权限、所有者等属性的变化进行同步,但是需要制定相应的参数,甚至只能同步一个文件的更改内容部分,这样就可以实现备份数据的快速同步。
Rsync官方地址:TP
Rsync监听端口:873
同步运行模式:串行/并行
提示:使用rsync还可以删除文件和目录,相当于rm命令。一个rsync相当于scp、cp和rm,但它优于它们的每个命令。
Rsync的特性
支持复制特殊文件,如连接文件和设备。
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
它可以保留原始文件或目录的所有属性,如权限、时间、软链接和硬链接、所有者、组等。不变–p。
可以实现增量同步,只同步变化的数据,所以数据传输效率很高(tar-N)。
可以用rcp,rsh,ssh等。以配合文件传输(rsync本身不加密数据)。
您可以通过套接字(进程模式)传输文件和数据(服务器和客户端)* * * * * *。
支持匿名实时认证(无系统用户)流程模式传输,可以实现方便安全的数据备份和镜像。
生产场景架构的集群备份方案
1.使用cron+rsync将所有客户端服务器数据同步到备份服务器。
2.针对公司和领导重要数据备份混乱的情况,提出了全网数据备份的解决方案。
3.将备份打包到本地,然后rsync和inotify应用将整个网络备份到一个固定的存储服务器上,然后通过存储服务器上的脚本检查备份结果,并向管理员报警。
4.定期将IDC机房的数据备份到公司内部服务器,防止机房地震、火灾造成数据丢失。
5.实时同步解决单点问题,如存储服务器。
备份类型介绍
完全备份增量备份假设客户机上有一个文件1文件2文件3文件,服务器上有一个文件1文件。现在,将客户机上的数据备份到服务器上

完全备份,将客户机文件1文件2文件3的所有数据内容备份到服务器(效率低,占用空)

增量备份:文件2文件3从客户端增量备份到服务器(提高备份效率,节省空,适合异地备份)
Rsync的应用场景
Rync的数据同步模式
1.push:所有主机将本地数据推送到Rsync备份服务器,这将导致数据同步缓慢(适合少量数据备份)

2.拉:rsync备份服务器拉所有主机上的数据,会导致备份服务器花很多钱

3.大量服务器备份场景

4.实现远程备份的思路

Rsync传输模式
Rsync使用三种主要的数据传输方法
本地模式
远程方式
精灵
本地传输模式
本地单个主机之间的数据传输(此时类似于cp命令)
#本地复制数据命令
本地:rsync [OPTION...] SRC...[DEST]
#本地复制数据示例
[root @ backup ~]# rsync-avz/etc/passwd/tmp/
Rsync #备份命令(cp)
[选项] #选项
科学研究委员会(Science Research Council的缩写)...#本地源文件
[DEST] #本地目标文件
远程传输模式
通过ssh通道传输数据,类似scp命令
#pull pull数据命令
Pull: rsync [OPTION...][用户@]主机:SRC...[DEST]
#拉取数据示例
[root @ backup ~]# rsync-avzroot @ 172 . 16 . 1 . 41:/etc/hostname。/#提取远程文件
[root @ backup ~]# rsync-avzroot @ 172 . 16 . 1 . 41:/root//backup/#提取远程目录中的所有文件
[root @ backup ~]# rsync-avzroot @ 172 . 16 . 1 . 41:/root/backup/#拉远程目录和目录中的所有文件
拉#拉,下载
Rsync #备份命令
[选项] #选项
[用户@] #目标主机的系统用户
主机#目标主机IP地址或域名
科学研究委员会(Science Research Council的缩写)...#目标主机源文件
[DEST] #从哪里下载
#推送推送数据命令
推送:rsync [OPTION...] SRC...主持人:DEST
#推送推送数据示例
rsync-avz/backup/2018-10-01 root @ 172 . 16 . 1 . 41:/tmp/
推送#推送,上传
Rsync #备份命令
[选项] #选项
科学研究委员会(Science Research Council的缩写)...#本地源文件
[用户@] #目标主机的系统用户
主机#目标主机IP地址或域名
[DEST] #目标映射位置
Rsync用SSH协议同步数据的缺陷
1.使用系统用户(不安全)2.使用普通用户(会导致权限不足情况)守护进程的传输模式
Rsync本身是一个非常重要的功能(不使用系统用户更安全)
#pull pull数据命令
Pull: rsync [OPTION...] [USER@]HOST::SRC...[DEST]
#1.将rsync备份服务的“备份模块”数据拉到本地/mnt目录
[root @ nfs01 ~]# rsync-avz rsync _ backup @ 192 . 172 . 16 . 1 . 41::backup//mnt/-password-file =/etc/rsync . password
Rsync #命令
[选项...] #选项
[用户@] #远程主机用户(虚拟用户)
主机::#远程主机地址
科学研究委员会(Science Research Council的缩写)...#远程主机模块(不是目录)
[DEST] #本地备份远程主机数据的位置
#推送推送数据命令
推送:rsync [OPTION...] SRC...[用户@]主持人:DEST
#2.将本地/mnt目录推送到rsync备份服务器的备份模块
[root @ nfs01 ~]# rsync-avz/mnt/rsync _ backup @ 192 . 172 . 16 . 1 . 41::backup/-password-file =/etc/rsync . password
Rsync #命令
[选项...] #选项
科学研究委员会(Science Research Council的缩写)...#远程主机模块(不是目录)
[用户@] #远程主机用户(虚拟用户)
主机::#远程主机地址
[DEST] #本地备份远程主机模块的位置
对应于Rsync命令的选项
-a #存档模式传输,等于-tropgDl
-v #详细模式输出、打印速率、文件数量等。
-z #在传输过程中被压缩以提高效率
-r #递归传输目录和子目录,即目录下的所有目录都以相同的方式传输。
-t #保留文件时间信息
-o #保留文件所有者信息
-p #维护文件权限
-g #保留文件组信息
-l #保持软连接
-P #显示同步过程和传输进度等信息
-D #保留设备文件信息
-L #保留软连接指向的目标文件
-e #使用的通道协议,并指定要替换rsh的shell程序
-exclude = PATTER #指定排除不需要传输的文件模式
-exclude-from = file #文件名所在的目录文件
- bwlimit=100 #限速变速器
-部分#断点延续
- delete #使目标目录和源目录数据一致
-密码-文件= XXX #使用密码文件
Rsync服务实践
主机角色外部网IP(广域网)内部网IP(局域网)主机名Rsync服务器10.0.0.41172.16.1.41备份Rsync客户端10.0.0.31172.16.1.31nfs
安装Rsync
[root @ backup ~]# yum-y install rsync
配置Rsync
[root @ backup ~]# cat/etc/rsyncd . conf
uid = rsync
gid = rsync
端口= 873
假super =是
使用chroot = no
最大连接数= 200
超时= 600
忽略错误
只读=假
list = false
auth users = rsync_backup
机密文件= /etc/rsync.passwd
日志文件= /var/log/rsyncd.log
#####################################
[备份]
comment =欢迎使用oldboyedu backup!
路径= /backup
-详细配置
[root @ backup ~]# vim/etc/rsyncd . conf
Uid = rsync #运行进程的用户
Gid =运行该进程的rsync #用户组
端口= 873 #监听端口
false super = yes # rsync不需要以root身份运行,并且允许接收文件的完整属性
用chroot = no #将推送的数据禁锢到某个目录,不允许跳出该目录
最大连接数= 200 #最大连接数
超时= 600 #超时
忽略错误#忽略错误消息
只读=假#读写备份数据
List = false #不允许查看模块信息
Authussers = rsync _ backup #将虚拟用户定义为连接身份验证用户
机密文件= /etc/rsync.passwd #定义rsync服务用户连接身份验证密码文件路径
[备份] #定义模块信息
注释=提交#模块注释信息
Path = /backup #定义接收备份数据目录
创造用户
创建用户标识以运行rsync服务
#1)创建rsync帐户,不允许登录,并且不创建主目录
[root @ backup ~]# user add-M-s/sbin/nologin rsync
#2)创建一个备份目录(在磁盘之间尽可能大空),并授权rsync用户作为所有者
[root@backup ~]# mkdir /backup
[root @ backup ~]# chown-R rsync . rsync/backup/
虚拟用户配置
创建一个虚拟用户密码文件,并授权600个安全权限(针对客户端连接时使用的用户)
[root @ backup ~]# echo " rsync _ backup:zls " >/etc/rsync.passwd
[root @ backup ~]# chmod 600/etc/rsync . passwd
进程管理
启动rsync服务,并将rsync添加到引导自启动
[root @ backup ~]# system CTL start rsyncd
[root @ backup ~]# system CTL enable rsyncd
检查端口
[root@backup ~]# netstat -lntup
活动的互联网连接(仅限服务器)
原接收方发送方本地地址外地地址状态工艺流程图/程序名称
TCP 0 0 0 . 0 . 0 . 0:873 0 . 0 . 0 . 0:* LISTEN 4758/rsync
客户端配置
Rsync客户端只需配置虚拟用户的密码,并授权为600安全权限
#方法1:适合终端执行指定的用户密码文件
[root @ nfs01 ~]# yum install rsync-y
[root@nfs01 ~]# echo "zls " >/etc/rsync.pass
[root @ nfs01 ~]# chmod 600/etc/rsync . pass
#模式2:用于脚本,强烈推荐
[root @ nfs01 ~]# export RSYNC _ PASSWORD = zls
实战一
客户端将备份目录中的所有内容推送到Rsync服务器
[root @ nfs01 ~]# export RSYNC _ PASSWORD = zls
[root @ nfs01 ~]# rsync-avz/backup/rsync _ backup @ 172 . 16 . 1 . 41::backup/
实战二
客户端将Rsync服务器的备份模块数据拉至本地客户端的/备份目录
[root @ nfs01 ~]# export RSYNC _ PASSWORD = zls
[root @ nfs01 ~]# rsync-avz rsync _ backup @ 172 . 16 . 1 . 41::backup/backup/
实战三
Rsync实现了无差异的数据同步
#拉远程数据:远程数据与本地数据一致。如果远程数据中没有本地数据,它将被删除,导致客户端数据丢失
[root @ nfs01 ~]# export RSYNC _ PASSWORD = zls
[root @ nfs01 ~]# rsync-avz-delete rsync _ backup @ 172 . 16 . 1 . 41::backup//data/
#将数据推送到远程端:本地端和远程端一致。如果本地没有远端,则会被删除,导致服务器端数据丢失
[root @ nfs01 ~]# export RSYNC _ PASSWORD = zls
[root @ nfs01 ~]# rsync-avz-delete/data/rsync _ backup @ 172 . 16 . 1 . 41::backup/
实战四
同步的极限速度限制
#企业案例:当数据库管理员使用rsync提取备份数据时,内部交换机的带宽被覆盖,因为文件太大,导致用户的请求没有响应
[root @ nfs01 ~]# export RSYNC _ PASSWORD = zls
[root @ nfs01 ~]# rsync-avz-bwlimit = 1 rsync _ backup @ 172 . 16 . 1 . 41::backup//data/
Rsync备份案例
web01、backup、nfs三种服务器的主机信息见下表:
角色extranet IP(WAN) intranet IP(LAN)主机名web eth 0:10 . 0 . 0 . 7 etp:172 . 16 . 1 . 7 web 01n fset 0:10 . 0 . 0 . 31 etp:172 . 16 . 1 . 31 ns 01 sync eth 0:10 . 0 . 0 . 31 etp
客户要求
1.客户端提前准备好备份的目录,目录规则如下:/backup/NFS _ 172 . 16 . 1 . 31 _ 2018-09-02
2.客户端将备份打包到本地(系统配置文件、应用程序配置等)。)并将其复制到/backup/NFS _ 172 . 16 . 1 . 31 _ 2018-09-02
3.客户端最终将备份数据推送到备份服务器
4.客户端每天凌晨1点定期执行脚本
5.客户端服务器将过去7天的数据保存在本地,以避免浪费磁盘空
服务器要求
1.服务器部署rsync来接收客户端推送的备份数据
2.服务器需要每天检查客户端推送的数据是否完整
3.服务器需要每天将验证结果通知管理员
4.服务器只保留6个月的备份数据,并删除其余数据
注意:所有服务器的备份目录必须都为/backup建议备份的数据内容如下:
#1.引导自启动配置文件设备安装配置文件本地内部网配置文件(系统配置文件)
/etc/RC . local/etc/fstab/etc/hosts
#2.cron预定任务防火墙防火墙脚本目录(重要目录)
/var/spool/cron//etc/firewalld/server/s
#3.系统日志文件
/var/log/ //系统安全日志、sudo日志、内核日志、rsyslog
#4.应用服务配置文件nginx,PHP,mysql,redis.....
1.实现客户端备份的想法,脚本定期在每天早上01: 00执行(打包->:标记->:推送->:保存最近7天的文件)
[root @ NFS]# cat/server/s/client _ rsync _ backup . sh
#!/usr/bin/bash
#1.定义变量
PATH =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
主机=$(主机名)
addr = $(ifconfig etp | awk ' NR = = 2 { print $ 2 } ')
日期=$(日期+%F)
Dest=${Host}_${Addr}_${Date}
路径=/backup
#2.创建备份目录
[-d $ Path/$ Dest]| | mkdir-p $ Path/$ Dest
#3.备份相应的文件
CD/& amp;& amp
[-f $ Path/$ Dest/system . tar . gz]| | tar czf $ Path/$ Dest/system . tar . gz etc/fstab etc/rsyncd . conf & amp;& amp
[-f $ Path/$ Dest/log . tar . gz]| | tar czf $ Path/$ Dest/log . tar . gz var/log/messages var/log/secure & amp;& amp
#4.携带md5认证信息
[-f $ Path/$ Dest/flag]| | MD5 sum $ Path/$ Dest/* . tar . gz & gt;$路径/$目标/标志_ $日期
#5.将本地数据推送到备份服务器
导出RSYNC_PASSWORD=zls
rsync-avz $ Path/rsync _ backup @ 172 . 16 . 1 . 41::backup
#6.将过去7天的数据保存在本地
查找$ Path/-类型d -mtime +7|xargs rm -rf
2.客户端编写一个计划任务,使备份在每天凌晨1点执行
[root@nfs01 ~]# crontab -l
00 01 * * */bin/bash/server/s/backup _ rsync . sh & amp;>。/dev/null
3.服务器验证客户端推送的数据的完整性(验证-->:存储验证结果-->:通过电子邮件将保存的结果发送给管理员-->:保留最后180天的数据)
#1.服务器配置邮件功能
[root @ backup/]# yum install mailx-y
[root@backup /]# vim /etc/mail.rc
设定from=253097001@qq.com
set SMTP = SMTP s://SMTP . QQ . com:465
设定smtp-auth-user=253097001@qq.com
设置SMTP-授权-密码=#客户端授权码
设置SMTP-auth =登录
设置SSL-verify =忽略
设置nss-config-dir=/etc/pki/nssdb/
#2.服务器验证和电子邮件通知脚本
[root @ backup ~]# mkdir/server/s-p
[root @ backup ~]# vim/server/s/check _ backup . sh
#!/usr/bin/bash
#1.定义全局变量
export PATH =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#2.定义局部变量
路径=/backup
日期=$(日期+%F)
#3.检查标志文件,验证文件,然后将验证结果保存到result_ time
查找$ Path/-键入f-name " flag _ $ Date“| xargs MD5 sum-c & gt;$路径/结果_ $ {日期}
#4.通过电子邮件将验证结果发送给管理员
邮件“同步备份$日期”123@qq.com & lt;$路径/结果_ $ {日期}
#5.删除超过7天的验证结果文件和超过180天的备份数据文件
find $ Path/-type f-name " result * "-mtime+7 | xargs RM-f
查找$ Path/-类型d -mtime +180|xargs rm -rf
4.服务器编写计划任务的脚本
[root@backup backup]# crontab -l
00 05 * * */bin/bash/server/s/check _ backup . sh & amp;>。/dev/null
5.如何扩展多台服务器的备份?
[root @ NFS ~]# rsync-avz/server 172 . 16 . 1 . 7:/

Rsync与inotify结合[扩展]
1.安装inotify
yum -y安装inotify-tools
2.2.inotify参数的描述
-m连续监控
-r递归
-q静音,仅打印时间信息
- timefmt指定输出时间格式
- format指定事件输出格式
%Xe事件
%w目录
%f文件
-e指定监控的事件
访问访问
修改内容修改
属性修改
Close_write修改真实文件内容
打开打开
创建创建
删除删除
卸载卸载
3.命令测试
/usr/bin/inotifywait-mrq-format“% Xe % w % f”-e创建、修改、删除、属性、close_write /backup
4.剧本写作
[root @ backup ~]# vim rsyn-inotify . sh
#!/bin/bash
dir=/backup
/usr/bin/inotifywait-mrq-format“% w % f”-e create,delete,attrib,close _ write $ dir | while read line做
cd $dir &。& amprsync -az -R - delete。rsync _ backup @ 172 . 16 . 1 . 31::backup-password-file =/etc/rsync . passwd & gt;/dev/null 2>。& amp一个
完成&。
1.《rsync Rsync 备份服务实战》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《rsync Rsync 备份服务实战》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1249091.html