Linux中的Rsync备份服务

news2025/1/21 4:58:03

目录

一、备份基本概述

1.备份的定义

2.备份的原因

3.备份分类

(1)完全备份

(2)增量备份

4.实现备份工具

二、Rsync——远程同步

1.Rsync基本介绍

2.Rsync同步模式

(1)推

(2)拉

三、Rsync应用场景

1.大量服务器备份场景

2.异地备份场景

3.Rsync传输模式

(1)使用三种主要的数据传输方式

(2)本地传输

(3)远程传输

(4)守护进程

4.常用选项

四、Rsync场景实例

1.服务端安装

2.服务端配置

3.Rsync服务端初始化

4.客户端初始化

(1)适合终端执行

(2)适合脚本执行

5.数据推送与拉取场景

(1)客户端推送backup目录下所有内容至Rsync服务端

(2)客户端拉取 Rsync服务端 backup 模块数据至本地客户端的/backup目录

6.数据无差异同步场景

(1)拉取远端数据:远端与本地保持一致,远端没有本地有会被删除,造成客户端数据丢失

(2)推送数据至远端:本地与远端保持一致,本地没有远端会被删除,造成服务器端数据丢失

7.推送数据限速场景

五、Rsync备份案例

1.备份需求

(1)客户端需求

(2)服务端需求

2.备份内容

(1)开机自启动配置文件 设备挂载配置文件 本地内网配置文件 (系统配置文件)/etc/rc.local   /etc/fstab  /etc/hosts

(2)cron定时任务 firewalld防火墙

(3)系统日志文件

(4)应用程序服务配置文件nginx、PHP、mysql、redis

3.客户端脚本

(1)定义变量

(2)创建备份目录

(3)备份对应的文件

(4)携带md5验证信息

(5)推送本地数据至备份服务器

(6)本地保留最近7天的数据

(7)定时任务,让备份每天凌晨1点执行

4.服务端脚本

(1)服务端配置邮件功能

(2)服务端校验、以及邮件通知脚本

(3)定义全局的变量

(4)定义局部变量

(5)查看flag文件,并对该文件进行校验,然后将校验的结果保存至result_时间

(6)将校验的结果发送邮件给管理员

(7)删除超过7天的校验结果文件,删除超过180天的备份数

(8)服务端编写定时任务脚本


一、备份基本概述

1.备份的定义

备份就是把文件在复制一份存放起来(就是增加一个副本)

2.备份的原因

数据很重要,减少数据的几率,便于快速恢复,一般对于用户录入数据这些重要数据可以选择录入,对于一般的软件、配置文件来讲可以不做备份

3.备份分类

(1)完全备份

全备、效率低下、占用空间、浪费带宽

(2)增量备份

增备,效率高,节省空间,节省带宽

4.实现备份工具

本地:cp

远程:scp、rsync

二、Rsync——远程同步

1.Rsync基本介绍

它可以实现不同主机之间的同步,同时支持增量和全量同步备份

Rsync监听端口:873

Rsync运行模式:C/S

2.Rsync同步模式

(1)推

所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)

(2)拉

Rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大

三、Rsync应用场景

1.大量服务器备份场景

2.异地备份场景

3.Rsync传输模式

(1)使用三种主要的数据传输方式

本地方式

远程方式:A→B

守护进程:将Rsync作为服务端使用

(2)本地传输

单个主机本地之间的数据传输(类似于cp命令)

语法:

rsync 选项 本地源文件 本地目标文件

(3)远程传输

通过ssh通道传输数据,类似scp命令

语法:

pull拉取:rsync 选项 目标主机系统用户 目标IP或域名 本地源文件 下载到的位置

push推送:rsync 选项 本地源文件 目标主机系统用户 目标主机IP地址或域名 目标对应位置

存在缺陷:使用系统用户导致不安全,使用普通用户导致权限不足

(4)守护进程

守护进程传输方式:rsync自身非常重要的功能(不是用户系统用户,更加安全)

语法:

pull拉取:rsync 选项 远程主机用户(虚拟用户) 远程主机地址 远程主机模块(不是目录) 将远程主机数据备份至本地的位置

push推送:rsync 选项 远程主机模块(不是目录) 远程主机用户(虚拟机用户) 远程主机地址 将远程主机模块备份至本地的位置

4.常用选项

-a

归档模式传输,等于-tropDl

-v

详细模式输出,打印速率,文件数量等

-z

传输时进行压缩以提高效率

-r

递归传输目录及子目录,即目录下的所有目录都同样传输

-t

保持文件时间信息

-o

保持文件属主信息

-p

保持文件权限

-g

保持文件属组信息

-l

保留软连接

-p

显示同步的过程及传输时的进度等信息

-D

保持设备文件信息

-L

保留软件连接指向的目标文件

-e

使用的信道协议,指定代替rsh的shlell程序

--

exclude=PATTERN

指定排除不需要传输的文件模式

--exclude-from=file

文件名所在的目录文件

--bwlimit=100

限速传输

--partial

断电续传

--delete

上目标目录和源目录数据保持一致

四、Rsync场景实例

服务端:10.0.0.31——外网  172.16.1.31——内网  主机名:backup

客户端:10.0.0.32——外网  172.16.1.31——内网 主机名:nfs

1.服务端安装

yum -y install rsync

2.服务端配置

cat /etc/rsync.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]

path = /backup   #定义模块信息

comment = commit #模块注释信息

path = /backup   #定义接收备份数据目录

3.Rsync服务端初始化

(1)创建rsync账户,不允许登录不创建家目录(用于运行rsync服务的用户身份)

(2)创建备份目录(尽可能磁盘空间足够大),授权rsync用户为属主

(3)创建虚拟用户密码文件,授权为600安全权限(用于客户端连接时使用的用户)

(4)启动rsync服务,并将rsync加入开机启动

(5)检查服务运行是否正常

[root@backup ~]useradd -M -s /sbin/nologin rsync

[root@backup ~]mkdir /backup

[root@backup ~]chown -R rsync.rsync /backup/

[root@backup ~]echo "rsync_backup:123" > /etc/rsync.passwd

[root@backup ~]chmod 600 /etc/rsync.passwd

[root@backup ~]systemctl start rsyncd

[root@backup ~]systemctl enable rsyncd

[root@backup ~]netstat -lntp

4.客户端初始化

Rsync客户端仅需要配置虚拟用户密码,并授权为600安全权限

(1)适合终端执行

将虚拟用户密码配置到一个文件中

[root@nfs ~] yum install rsync -y

[root@nfs ~] echo "oldxu" > /etc/rsync.pass

[root@nfs ~] chmod 600 /etc/rsync.pass

(2)适合脚本执行

将虚拟用户密码设定为环境变量

[root@nfs ~] yum install rsync -y

[root@nfs ~] export RSYNC_PAsSWORD=oldxu

5.数据推送与拉取场景

(1)客户端推送backup目录下所有内容至Rsync服务端

[root@nfs ~] export RSYNC_PAssWORD=oldxu

[root@nfs ~] rsync -avz /backup/rsync_backup@172.16.1.31::backup/

(2)客户端拉取 Rsync服务端 backup 模块数据至本地客户端的/backup目录

[root@nfs ~] export RSYNC_PASSWORD=oldxu

[root@nfs ~] rsync -avz rsync_backup@172.16.1.31::backup /backup/

6.数据无差异同步场景

Rsync实现本地数据与远程数据无差异同步

(1)拉取远端数据:远端与本地保持一致,远端没有本地有会被删除,造成客户端数据丢失

[root@nfs ~] export RSYNC_PASSWORD=oldxu

[root@nfs ~] rsync -avz --delete rsync_backup@172.16.1.31::backup/ /data/

(2)推送数据至远端:本地与远端保持一致,本地没有远端会被删除,造成服务器端数据丢失

[root@nfs ~] export RSYNC_PAsSWORD=oldxu

[root@nfs ~] rsync -avz --delete /data/rsync_backup@172.16.1.31::backup/

7.推送数据限速场景

故障案例:某DBA使用rsync拉取备份数据时,由于文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应;

[root@nfs ~] export RSYNC_PASSWORD=oldxu

#单位MB

[root@nfs ~] rsync -avz --bwlimit=1 rsync_backup@172.16.1.31::backup/ /data/

五、Rsync备份案例

角色

外网IP(NAT)

内网IP(LAN)

主机名

WEB

eth0:10.0.07

eth1:172.16.1.7

web01

NFS

eth0:10.0.0.32

eth1:172.16.1.32

nfs

Rsync

eth0:10.0.0.31

eth1:172.16.1.31

backup

1.备份需求

(1)客户端需求

1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2020-09-02

2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2020-09-02

3.客户端最后将备份的数据进行推送至备份服务器

4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间

5.客户端每天凌晨1点定时执行该脚本

(2)服务端需求

1.服务端部署rsync,用于接收客户端推送过来的备份数据

2.服务端需要每天校验客户端推送过来的数据是否完整

3.服务端需要每天校验的结果通知给管理员

4.服务端仅保留6个月的备份数据,其余的全部删除注意:所有服务器的备份目录必须都为/backup

2.备份内容

(1)开机自启动配置文件 设备挂载配置文件 本地内网配置文件 (系统配置文件)/etc/rc.local   /etc/fstab  /etc/hosts

(2)cron定时任务 firewalld防火墙

脚本目录 (重要目录)

/var/spool/cron/ /etc/firewalld/server/scripts

(3)系统日志文件

/var/log///系统安全日志、sudo日志、内核日志、rsyslog日志

(4)应用程序服务配置文件nginx、PHP、mysql、redis

3.客户端脚本

[root@nfs scripts] cat/scripts/client_rsync_backup.sh

#!/usr/bin/bash

(1)定义变量

PATH=/usr/1oca1/sbin:/usr/1ocal/bin:/usr/sb

in:/usr/bin:/root/bin

Host=$ (hostname)

Addr=$(ifconfig eth1|awk 'NR==2{print $2}')

Date=$(date +%F)

Dest=${Host}_${Addr}_${Date}

Path=/backup

(2)创建备份目录

[ -d $Path/$Dest ] Il mkdir -p $Path/$Dest

(3)备份对应的文件

cd /&& [ -f $Path/$Dest/system.tar.gz ] ll tar czf $Path/$Dest/system.tar.gz etc/fstabetc/rsyncd.conf && \[ -f $Path/$Dest/log.tar.gz ] Il tar czf $Path/$Dest/log.tar.gz var/log/messagesvar/log/secure &&\

(4)携带md5验证信息

[ -f $Path/$Dest/flag ] Il md5sum$Path/$Dest/*.tar.gz > $Path/$Dest/flag_$Date

(5)推送本地数据至备份服务器

export

RSYNC_PASSWORD=bgX

rsync -avz $Path/

rsync_backup@172.16.1.31::backup

(6)本地保留最近7天的数据

find $Path/ -type d -mtime +7lxargs rm -rf

(7)定时任务,让备份每天凌晨1点执行

[root@nfs ~] crontab -l 00 01 * * * /bin/bash/scripts/backup_rsync.sh & > /dev/null

4.服务端脚本

(1)服务端配置邮件功能

[root@backup ~] yum install mailx -y

[root@backup ~] vim /etc/mail.rc

set from=1235467890@qq.com

set smtp=smtps://smtp.qq.com:111

set smtp-auth-user=1234567890@qq.com

set smtp-auth-password=#客户端授权码

set smtp-auth=login

set ssl-verify=ignore

set nss-config-dir=/etc/pki/nssdb/

(2)服务端校验、以及邮件通知脚本

[root@backup ~] mkdir /scripts -p

[root@backup ~] vim/scripts/check_backup.sh

#!/usr/bin/bash

(3)定义全局的变量

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

(4)定义局部变量

Path=/backup Date=$(date +%F)

(5)查看flag文件,并对该文件进行校验,然后将校验的结果保存至result_时间

find $Path/-type f -name "flag_$Date"|xargs md5sum -c > $Path/result_${Date}

(6)将校验的结果发送邮件给管理员

mail -s "Rsync Backup $Date" 123@qq.com < $Path/result_${Date}

(7)删除超过7天的校验结果文件,删除超过180天的备份数

据文件

find $Path/ -type f -name "result*" -mtime +7|xargs rm -f

find $Path/ -type d -mtime +180|xargs rm -rf

(8)服务端编写定时任务脚本

[root@backup backup] crontab -l 00 05 * * * /bin/bash/scripts/check_backup.sh &> /dev/null

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】项目自动化构建工具make / Makefile 及进度条小程序

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;make项目管…

关于对死锁的理解

文章目录什么是死锁&#xff1f;举例理解死锁如何解决死锁锁池与等待池的理解什么是锁池与等待池锁池与等待池的区别两个线程交替执行什么是死锁&#xff1f; 所谓死锁&#xff0c;是指互斥锁标记使用不当造成多个线程&#xff0c;相互持有对方想要申请的资源&#xff0c;不释…

HummerRisk V0.7.0:支持京东云、webhook、PDF下载等

HummerRisk V0.7.0发布&#xff1a;新增京东云支持&#xff0c;系统增加webhook支持&#xff0c;灵活扩展&#xff0c;新增多种页面的PDF下载&#xff0c;新增主机的批量导入和Windows类型主机的检测支持。 感谢社区中小伙伴们的反馈&#xff0c;你们的认可是我们前进的动力。…

四旋翼无人机学习第16节--labview开发allegro的PAD与封装查询工具

文章目录1 前言2 使用展示(有labview软件)2.1 使用界面展示2.2 配置文件展示2.3 封装检索2.4 pad检索2.5 软件退出3 使用展示(无labview软件)4 源文件下载方式1 前言 在学习allegro过程中&#xff0c;设计封装需要先设计组成封装的PAD&#xff0c;也就是使用Padstack Editor工…

Linux学习-93-SELinux安全上下文操作

18.6 SELinux安全上下文查看方法 SELinux 管理过程中&#xff0c;进程是否可以正确地访问文件资源&#xff0c;取决于它们的安全上下文。进程和文件都有自己的安全上下文&#xff0c;SELinux 会为进程和文件添加安全信息标签&#xff0c;比如 SELinux 用户、角色、类型、类别等…

Android设计模式详解之原型模式

前言 原型模式是一个创建型设计模式。 定义&#xff1a;用原型实例指定创建对象的种类&#xff0c;并通过复制这些原型创建新的对象。 使用场景&#xff1a; 类初始化需要消耗非常多的资源&#xff0c;这个资源包括数据、硬件资源&#xff0c;通过原型复制避免这些消耗&…

音质更出色的骨传导耳机,设计也很时尚,南卡Runner CC3上手

这两年我几乎每天都会用耳机&#xff0c;现在耳机的种类也不少&#xff0c;如果是户外健身的话&#xff0c;我觉得骨传导耳机比挂脖式的耳机更好用&#xff0c;这种耳机因为不入耳的使用方式&#xff0c;在我们听音乐的同时&#xff0c;还可以更清晰地感知周围的情况&#xff0…

【Django项目开发】自动生成接口文档(二)

文章目录一、安装第三方库drf-yasg2二、注册到子应用INSTALLED_APPS三、配置路由1、注意四、接口文档中展示详细的文档说明视图类中接口的标准注释五、视图类中自己定义的方法实现接口文档注释1、注意一、安装第三方库drf-yasg2 pip install drf-yasg2二、注册到子应用INSTALL…

新技术不断发展,一个全新的互联网行业的新风口已然来临

拥抱实体经济&#xff0c;绝对是当下互联网玩家们的首要选择。无论是头部的互联网企业来讲&#xff0c;还是新生的互联网玩家而言&#xff0c;它们都不约而同地将关注的焦点聚焦在了这样一个方向上。   透过这一点&#xff0c;我们可以非常明显地感受到&#xff0c;一个全新的…

网络技术展开型介绍(超详细)二

♥️作者&#xff1a;小刘在这里 ♥️每天分享云计算网络运维课堂笔记&#xff0c;疫情之下&#xff0c;你我素未谋面&#xff0c;但你一定要平平安安&#xff0c;一 起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放&#xff0c;…

MyBatis—MyBatis参数详解

文章目录MyBatis参数详解1、 parameterType2、resultType3、 resultMap结果类型MyBatis获取参数值的两种方式1.配置sql输出日志2.看#{}和${}的输出现象3.#{}的预编译4.sql注入5.什么时候使用${}6.如何选择使用 #{} 和 ${}7.为什么#{}可以预防sql注入—————————————…

Shuffle的作用以及MapReduce的Shuffle过程

Shuffle的设计 为什么需要Shuffle&#xff1f; Shuffle的本质是基于磁盘划分来解决分布式大数据量的全局分组、全局排序、重新分区【增大】 等问题 因为单台机器的资源处理不了分布式大数据量全局分区/排序/分组 所以需要通过Shuffle对每一台机器的数据构建一个Task来做分区的…

通关剑指 Offer——剑指 Offer II 055. 二叉搜索树迭代器

1.题目描述 剑指 Offer II 055. 二叉搜索树迭代器 实现一个二叉搜索树迭代器类BSTIterator &#xff0c;表示一个按中序遍历二叉搜索树&#xff08;BST&#xff09;的迭代器&#xff1a; BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会…

20221221英语学习

今日新词 define v.下定义&#xff1b;确切说明&#xff08;或解释&#xff09;&#xff1b;树立&#xff0c;表明 chemistry n.化学, 物质的化学组成&#xff08;或性质&#xff09; fly v.飞, 飞翔, 航行, &#xff08;乘航空器或航天器&#xff09;航行 forfeit v.&…

港华燃气上线WeOps推动运维效能提升,托举业务智慧运行!

“嘉为蓝鲸WeOps一体化运维平台有效提升了运维工作效率&#xff0c;满足系统安全要求&#xff0c;尤其是补丁安装、巡检自动化、监控告警等功能&#xff0c;为我们节省了运维人力成本和时间成本。” ——来自港华燃气 港华集团介绍&#xff1a; 港华集团为香港中华煤气在内地…

m在LTE-A系统载波聚合下的资源分配算法的matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 载波聚合即CA&#xff0c;是LTE-A中的关键技术。是为满足用户峰值速率和系统容量提升的要求&#xff0c;增加系统传输带宽的技术&#xff0c;通过CA技术&#xff0c;用户最高上网速率可提升到300…

IPv4 和 IPv6 报文格式详解

文章目录1 概述2 报文格式2.1 IPv42.2 IPv62.3 两者区别3 网工软考真题1 概述 2 报文格式 2.1 IPv4 中文名英文名长度 bit&#xff08;位&#xff09;解释版本Version4IP协议版本号&#xff0c;固定为 4首部长度Header Length4数据报首部的总长度。 以 4 Byte&#xff08;字节…

【Java基础知识复盘】Java概述篇

本人知识复盘系列的博客并非全部原创&#xff0c;大部分摘自网络&#xff0c;只是为了记录在自己的博客方便查阅&#xff0c;往后也会陆续在本篇博客更新本人查阅到的新的知识点&#xff0c;望悉知&#xff01; Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程…

100多条2023年元宇宙统计数据!Hubbleverse替你整理好了!

欢迎来到Hubbleverse &#x1f30d; 关注我们 关注宇宙新鲜事 &#x1f4cc; 预计阅读时长&#xff1a;9分钟 本文仅代表作者个人观点&#xff0c;不代表平台意见&#xff0c;不构成投资建议。 元宇宙最近被评为最热门的新兴技术趋势之一。在过去的几年里&#xff0c;元宇宙…

SpringBoot整合Mybatis之Mapper接口和映射文件

一、什么是MyBatis MyBatis中文网https://mybatis.net.cn/ MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型…