Always keep a beginn|

Dusk_Yun

园龄:6个月粉丝:0关注:0

2024-08-19 21:37阅读: 36评论: 0推荐: 0

rsync概述详解

一、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 root@10.0.0.41:/root/		# 上传模式push
rsync -azv root@10.0.0.41:/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 root@10.0.0.41:/root/
输入41的root密码
案例2.下载模式
将41上的41.txt下载到当前目录
[root@web01 ~]# rsync -avz root@172.16.1.41:/root/41.txt .

域名:
[root@backup ~]# rsync -avz 41.txt root@www.linuxnc.com:/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 root@10.0.0.41:/root/
目录加/   表示目录下所有的文件 只拷贝oldboy目录下面的所有文件到41
[root@web01 ~]# rsync -avz oldboy/ root@10.0.0.41:/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 rsync_backup@10.0.0.41::backup
模块后面也可以加路径:
[root@web01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup/oldboy/
将服务器上的11.txt下载到当前目录
[root@web01 ~]# rsync -avz rsync_backup@10.0.0.41::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  rsync_backup@10.0.0.41::data --password-file=/etc/rsync.pass
第二种方法: 使用rsync服务的内置变量
RSYNC_PASSWORD 内置变量默认为空,在执行rsync推送命令时候会先读取此变量,如果有则调用,如果没有定义,则提示让用户输入密码
1.定义变量
[root@web01 ~]# export RSYNC_PASSWORD=123456
2.直接推送默认会调用上面的变量
[root@web01 ~]# rsync -avz /etc/hosts  rsync_backup@10.0.0.41::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/ rsync_backup@10.0.0.41::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 "验证结果" 15719154792@163.com
else
	echo "验证失败" | mail -s "验证结果" 15719154792@163.com
fi
find /backup/ -ctime +180 -name "nfs.*" -exec rm -rf {} \;

本文作者:Dusk_Yun

本文链接:https://www.cnblogs.com/9Dusk/p/18368172

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Dusk_Yun  阅读(36)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起