首页 > 其他分享 >rsync概述详解

rsync概述详解

时间:2024-08-19 21:37:47浏览次数:11  
标签:rsync backup etc 详解 概述 web01 root 客户端

一、rsync基础概念:

  • rsync是实时数据备份的作用

1、rsync数据备份传输的方式

  1. 本地模式:类似cp命令,与其不同的是,rsync属于增量备份
  2. 远程方式模式:不区分服务端和客户端,实现两台主机时间到数据拷贝,可以直接进行数据的上传/下载进行备份/脚本打包
  3. 守护进程模式:这种模式采用虚拟用户的方式进行数据上传/下载相较于远程模式更规范和安全

2、完全备份/增量备份的优劣势

rsync默认(增量) 完全备份 增量备份
优点 数据完整 高效,节省空间
缺点 占内存,消耗CPU 数据可能出现丢失

3、CS架构/BS架构

软件体系结构中,BS架构和CS架构都是常见的架构形式,分别代表浏览器/服务器架构和客户端/服务器架构

BS架构:一种基于web的应用程序架构,核心是将应用程序的逻辑部分放在服务端,将用户界面和交互部分放在web浏览器。这样在浏览器只需要一个web浏览器就可以完全应用程序的操作。这种架构方式具有开发、部署和维护成本低、跨平台性好
CS架构:一种基于应用程序的架构,应用程序被分为客户端和服务端两部分,客户端负责用户交互,服务端负责数据存储和业务逻辑处理。客户端与服务端之间通过网络进行通信,服务器将数据和结果返回给客户端,这种架构方式具有灵活性强、响应速度快等优点,适用于复杂业务场景

4、备份数据的方式:

  1. 上传:将数据在客户端上传到服务端
  2. 下载:将数据在客户端下载到服务端

5、监听端口

  • 873

二、rsync传输方式

1、本地模式

rsync -avz 复制的内容 复制到哪里去
	-a:归档模式,表示以递归方式传输文件,并保持所有文件属性
	-v:详细模式输出
	-z:对备份的文件在传输时进行压缩处理

# 案例1: 将1.txt 复制到/opt下
[root@web01 ~]# touch 1.txt
[root@web01 ~]# ll
total 0
-rw-r--r-- 1 root root 0 Dec  4 09:43 1.txt
[root@web01 ~]# rsync -avz 1.txt /opt/
sending incremental file list
sent 44 bytes  received 12 bytes  112.00 bytes/sec
total size is 0  speedup is 0.00
[root@web01 ~]# echo 111 > 1.txt
[root@web01 ~]# rsync -avz 1.txt /opt/
sending incremental file list 1.txt

2、远程访问模式

rsync -azv root@主机:路径
rsync -azv 1.txt [email protected]:/root/		# 上传模式push
rsync -azv [email protected]:/etc/passwd /opt/	# 下载模式pull
rsync:命令
-azv:参数
root:对端服务器的用户名称
@:分隔符
主机:IP地址 域名 主机名称
:	:主机和路径的分隔符
/root:文件路径


案例1:上传模式【将10.0.0.7上的1.txt上传到10.0.0.41的/root目录下】
[root@web01 ~]# rsync -avz 1.txt [email protected]:/root/
输入41的root密码
案例2.下载模式
将41上的41.txt下载到当前目录
[root@web01 ~]# rsync -avz [email protected]:/root/41.txt .

域名:
[root@backup ~]# rsync -avz 41.txt [email protected]:/tmp/
主机名称: hosts文件 本地DNS解析
[root@web01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.41 www.baidu.com backup
[root@web01 ~]# rsync -avz /etc/hosts root@backup:/root/

注意事项: 拷贝目录的注意事项
目录不加/ 表示目录本身,将oldboy目录及下面的所有文件拷贝到41
[root@web01 ~]# rsync -avz oldboy [email protected]:/root/
目录加/   表示目录下所有的文件 只拷贝oldboy目录下面的所有文件到41
[root@web01 ~]# rsync -avz oldboy/ [email protected]:/root/

3、守护进程模式

rsync -avz file 匿名活用户@服务端IP::模块名称
rsync -avz 匿名活用户@服务端IP::模块名称/file

三、rsync服务配置

1、服务准备:

主机角色 外网IP(WAN) 内网IP(LAN) 主机名称
rsync服务端 10.0.0.41 172.16.1.41 backup
rsync客户端 10.0.0.7 172.16.1.7 web01

2、实操:

1、安装服务
[root@backup ~]# yum -y install rsync
查看是否存在软件包:rpm -qa		查看是否存在相关软件包配置文件地址:rpm -qc 

2、配置服务
[root@backup ~]# cat /etc/rsyncd.conf
uid = rsync					# 运行进程的用户
gid = rsync					# 运行进程的用户组
port = 873					# 监听端口
fake super = yes			# 无需让rsync以root身份运行,允许接收文件的完整属性
use chroot = no				# 禁锢推送的数据至某个目录,不允许跳出该目录
max connections = 200		# 最大连接数
timeout = 600				# 超时时间
ignore errors				# 忽略错误信息
read only = false			# 对备份数据可读写
list = false				# 不允许查看模块信息
auth users = rsync_backup	# 定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.passwd	# 定义rsync服务用户连接认证密码文件路径
log file = /var/log/rsyncd.log
#####################################
[backup]								# 定义模块信息
comment = welcome to oldboyedu backup!	# 模块注释信息
path = /backup							#定义接收备份数据目录

3.根据配置文件创建必要的数据
1)创建用户
[root@backup ~]# useradd -M -s /sbin/nologin rsync
2)创建密码文件,并修改权限为600
[root@backup ~]# cat /etc/rsync.passwd
rsync_backup:123456
[root@backup ~]# chmod 600 /etc/rsync.passwd
[root@backup ~]# ll /etc/rsync.passwd
-rw------- 1 root root 20 Dec  4 11:03 /etc/rsync.passwd
3)创建存放数据的目录
[root@backup ~]# mkdir /backup
[root@backup ~]# ll -d /backup
drwxr-xr-x 2 root root 6 Dec  4 11:06 /backup
修改属主属组权限为rsync服务的启动用户rsync
[root@backup ~]# chown rsync.rsync /backup/
[root@backup ~]# ll -d /backup/
drwxr-xr-x 2 rsync rsync 6 Dec  4 11:06 /backup/

4.启动服务加入开机自动运行
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd

检查服务是否运行:
[root@backup ~]# netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1303/sshd           
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      4267/rsync  

5.测试
客户端推送:
[root@web01 ~]# rsync -avz /etc/hosts [email protected]::backup
模块后面也可以加路径:
[root@web01 ~]# rsync -avz /etc/hosts [email protected]::backup/oldboy/
将服务器上的11.txt下载到当前目录
[root@web01 ~]# rsync -avz [email protected]::backup/oldboy/11.txt .

四、rsync参数选项

指定密码文件实现免交互
第一种方法: 使用密码文件方式
[root@web01 ~]# cat /etc/rsync.pass 
123456
修改文件权限
[root@web01 ~]# chmod 600 /etc/rsync.pass
使用密码密码文件
[root@web01 ~]# rsync -avz /etc/hosts  [email protected]::data --password-file=/etc/rsync.pass
第二种方法: 使用rsync服务的内置变量
RSYNC_PASSWORD 内置变量默认为空,在执行rsync推送命令时候会先读取此变量,如果有则调用,如果没有定义,则提示让用户输入密码
1.定义变量
[root@web01 ~]# export RSYNC_PASSWORD=123456
2.直接推送默认会调用上面的变量
[root@web01 ~]# rsync -avz /etc/hosts  [email protected]::data

五、企业案例:

1、需求:

脚本+定时任务
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个月的备份数据,其余的全部删除
find /backup/ -ctime +180 -name "nfs*" -exec rm -rf {} \;
注意:所有服务器的备份目录必须都为/backup


邮箱设置:
#1.服务端配置邮件功能
[root@rsync~]# yum install mailx -y
[root@rsync~]# vim /etc/mail.rc 
set from=写自己的163邮箱
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=写自己的163邮箱
set smtp-auth-password=JMEHJRULSYTSRLJH   #授权密码管理的密码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
#2.测试发送邮件
[root@rsync ~]# echo "验证成功" | mail -s "验证结果" 163邮箱

2、实操:

# 【客户端:】
# 创建文件夹
mkdir /backup
# 创建包含自身ip和时间的一个目录
mkdir -p /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`

# 对需要的目录或者文件进行压缩
tar -zcvf /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`/etc.tar.gz $(find /etc/ -type f)

# 进入对应文件夹,避免'/'报错提示
cd /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`

# md5校验,避免数据传输之后数据错乱
md5sum etc.tar.gz > md5xfs.log

# 上传
rsync -azv /backup/ [email protected]::backup --password-file=/etc/rsync.pass

# 客户端服务器本地保留最近7天的数据,避免浪费磁盘空间
find /backup/ -ctime +7 -name 'xfs.*'|xargs -rm

######################################################################################################################

#【服务端】
cd /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`		# 进入对应文件夹(根据具体情况而定+)
md5sum -c md5xfs.log							# 进行MD5校验
if [ $? -eq 0 ];then 			# 判断上一级最终结果是否为0,这里是shell
        echo "验证成功" | mail -s "验证结果" [email protected]
else
	echo "验证失败" | mail -s "验证结果" [email protected]
fi
find /backup/ -ctime +180 -name "nfs.*" -exec rm -rf {} \;

标签:rsync,backup,etc,详解,概述,web01,root,客户端
From: https://www.cnblogs.com/9Dusk/p/18368172

相关文章

  • MVCC 详解
    MVCC简单理解MVCC,全称Multi-VersionConcurrencyControl,是多版本并发控制的意思。在高并发情况下操作数据库可能会出现脏写、脏读、不可重复度、幻读这四个问题。通过MVCC可以实现在不加锁的前提下避免一些问题。MVCC的实现原理多版本首先,我们引入一个概念,即行数......
  • APP安全检测报告内容详解
    一、APP安全检测的必要性APP安全检测是确保移动应用安全的重要一环。在开发过程中,由于技术、人员和管理等方面的原因,APP可能存在各种安全漏洞和风险。这些漏洞一旦被黑客利用,可能导致用户数据泄露、恶意代码注入、应用被篡改等严重后果。因此,对APP进行安全检测,及时发现并修复......
  • TCPIP路由技术第一卷第四章-3-链路状态协议概述
    链路状态路由协议ospfis-isospfietf(rfc)is-isositcp/iplsa序列号1.线性序列号2.环形序列号3.棒棒糖序列号ospf版本ospfversion1实验环境ospfversion2ipv4ospfversion3ipv6maxage当lsa的年龄到达maxage时,将被从所有数据库中删除.(默认3600秒,1小时)ls......
  • TCPIP路由技术第一卷第七章第一部分Eigrp整体概述以及邻居
    igrp不支持无类路由eigrp思科私有扩展更新算法dualk值metric=cost[10^7/BWmin+delaysum]*256距离矢量路由协议触发更新ipbandwidth-percenteigrp来改变缺省占用总带宽的百分比.缺省情况下,egirp协议使用的带宽不超过链路总带宽的50%.eigrp无类别的路由协议,更新包含子......
  • SpringCloud:服务保护和分布式事务详解
    ♥️作者:小宋1021......
  • re模块详解
    正则表达式(RegularExpression,简称regex或regexp)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在编程和数据处理中,正则表达式极其强大,可以用来搜索、编辑或操作文本和......
  • 字符函数与字符串函数详解
    ......
  • IDEA常用快捷键大全(详解)
    前言IDEA中提供了很多快捷键,点击File-->Settings-->keymap便可进入看到IDEA提供的快捷键。我们也可以搜索和自定义所有快捷键,下面给出的是IDEA中默认的快捷键;一.Ctrl相关Ctrl+F在当前文件进行文本查找(必备)Ctrl+R在当前文件进行文本替换(必备)Ctrl+Z撤销(必备......
  • C/C++语言基础--指针三大专题详解2(指针与数组关系,动态内存分配,代码均可)
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言指针是C/C++的灵魂,和内存地址相关联,运行的时候速度快,但是同时也有很多细节和规范要注意的,毕竟内存泄漏是很恐怖的指针打算分三篇文章进行讲解,本专题是二,介绍了指针和数组的关系、动态内存如何分配和释放等问题专题......
  • 存储系列之 Linux ext2 概述
     来自:https://www.cnblogs.com/orange-CC/p/12673052.html 存储系列之Linuxext2概述引言:学习经典永不过时。 我们之前介绍过存储介质主要是磁盘,先介绍过物理的,后又介绍了虚拟的。保存在磁盘上的信息一般采用文件(file)为单位,磁盘上的文件必须是持久的,同时文件是通过操......