rsync 备份工具(附rsync+inotify 实时同步部署实例)

rsync 备份工具(附rsync+inotify 实时同步部署实例)

  • 1、rsync概述
    • 1.1关于rsync
    • 1.2rsync 的特点
    • 1.3工作原理
  • 2、rsync相关命令
    • 2.1基本格式和常用选项
    • 2.2启动和关闭rsync服务
    • 2.3下行同步基本格式
    • 2.4上行同步基本格式
    • 2.5免交互
      • 2.5.1指定密码文件
      • 2.5.2rsync-daemon方式
      • 2.5.3rsync-ssh方式
    • 2.6定期同步
  • 3、部署rsync定期同步
    • 3.1配置rsync源服务器(节点1)
    • 3.2发起端(节点2)
    • 3.3发起端配置 rsync+inotify
  • 4、使用rsync快速删除大量文件

1、rsync概述

1.1关于rsync

Rsync ( Remote sync)是一个远程数据同步工具,一款快速增量备份工具,使用于unix/Linux/windows等多种平台。

Rsync 使用所谓的“Rsync 演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

运行 Rsync server 的机器也叫 backup server,一个 Rsync server 可同时备份多个 client 的数据;也可以多个Rsync server 备份一个 client 的数据。

Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。

Rsync server 会打开一个873的服务通道(port),等待对方 Rsync 连接。
连接时,Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。

第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

官方网站: http://rsync.samba.org

1.2rsync 的特点

  • 可以镜像保存整个目录树和文件系统;
  • 可以很容易做到保持原来文件的权限、时间、软硬链接等;
  • 无须特殊权限即可安装;
  • 优化的流程,文件传输效率高;
  • 可以使用 rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
  • 支持匿名传输。

1.3工作原理

在这里插入图片描述
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为rsync同步源。

首先服务器B(发起源)向服务器A(同步源)进行数据备份,将自己的数据备份到服务器A中。

当服务器B中的数据遭到损失或者增量的时候,都会从服务器A中进行数据同步。

服务器B数据丢失则从服务器A中同步数据丢失的部分。

当服务器B数据增多了,就会再次向服务器A进行数据备份,但是备份的不是完整备份,而是增量备份,即备份同步源中没有的数据。

2、rsync相关命令

2.1基本格式和常用选项

#基本格式
rsync [选项] 原始位置 目标位置

在这里插入图片描述

2.2启动和关闭rsync服务

  • 启动服务
//启动 rsync 服务,以独立监听服务的方式(守护进程)运行 
rsync --daemon				
  • 关闭服务
//关闭 rsync 服务
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid

2.3下行同步基本格式

从源服务器拉数据

rsync [选项] 源服务器位置 本地位置

##举个例子#
#格式一
rsync -avz test@192.168.2.102::message /opt/					#格式二
rsync -avz rsync://test@192.168.2.102/message /opt/#test为配置文件中的授权账户
#IP地址为同步源地址
#message 为配置文件中定义的共享模块

2.4上行同步基本格式

推数据到源服务器

rsync [选项] 本地位置 源服务器位置

2.5免交互

2.5.1指定密码文件

echo "abc123" > /etc/server.pass
chmod 600 /etc/server.pass

2.5.2rsync-daemon方式

rsync -avz --delete --password-file=/opt/userlist yiliangchen@192.168.80.30::wwwky31  /opt/data/          #rsync-daemon方式

2.5.3rsync-ssh方式

rsync -avz --delete -e 'sshpass -p abc1234 ssh -p 22' /etc/yum.repos.d root@192.168.80.20:/opt/data       #rsync-ssh方式

2.6定期同步

结合crontab计划任务,可以实现定期同步。

#举个例子 
crontab -e
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.80.10::wwwroot /opt/
#为了在同步过程中不用输入密码,需要创建一个密码文件,保存 backuper 用户的密码,如 /etc/server.pass。
#在执行 rsync 同步时使用选项 “--password-file=/etc/server.pass” 指定即可。systemctl restart crond
systemctl enable crond

3、部署rsync定期同步

3.1配置rsync源服务器(节点1)

yum install -y rsync
//安装rsync服务

在这里插入图片描述

rpm -qc rsync		//查看rsync配置文件位置#建立/etc/rsyncd.conf 配置文件
vim /etc/rsyncd.conf	//添加以下配置项uid = root
gid = root
use chroot = yes		#禁锢在源目录
max connections = 4
address = 192.168.190.100	#监听地址
port = 873	#监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log	#日志文件位置
pid file = /var/run/rsyncd.pid	#存放进程 ID 的文件位置
hosts allow = 192.168.190.0/24	#允许访问的客户机地址
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z		#同步时不再压缩的文件类型[wwwroot]			#共享模块名称
path = /var/www/html			   #源目录的实际路径
comment = document Root of www
read only = no		#是否为只读
auth users = fsj	#授权账户,多个账号以空格分隔
secrets file = /opt/rsyncd_userlist#存放账户信息的数据文件
#如采用匿名的方式,只要将其中的“auth users”和“secrets file”配置项去掉即可。
#为备份账户创建数据文件

在这里插入图片描述
在这里插入图片描述

vim /opt/rsyncd_userlist
fsj:abc123  #无须建立同名系统用户

在这里插入图片描述

chmod 600 /etc/rsyncd_users.db

在这里插入图片描述

mkdir -p /var/www/html  //创建文件夹rsync --daemon		#启动 rsync 服务,以独立监听服务的方式(守护进程)运行 

在这里插入图片描述

netstat -anpt | grep rsync

在这里插入图片描述

cd /var/www/htmlcp /etc/fatab ./

在这里插入图片描述

3.2发起端(节点2)

yum install -y rsync
//安装rsync服务

在这里插入图片描述

启动 rsync 服务程序
rsync --daemon		
#启动 rsync 服务,以独立监听服务的方式(守护进程)运行 netstat -anpt | grep rsync

在这里插入图片描述

cd /opt  //切换到opt目录
ls
mkdir data //在opt目录下创建data目录
cd data  //切换到data目录
ls

在这里插入图片描述

#将指定的资源下载到本地/opt 目录下进行备份。
格式一:
rsync -avz fsj@192.168.190.100::wwwky31 /opt/data	#密码abc123

在这里插入图片描述

格式二:
rsync -avz rsync://fsj@192.168.190.100/wwwky31 /opt/data

在这里插入图片描述

免交互格式配置:
echo "abc123" > /etc/server.pass
chmod 600 /etc/server.pass

在这里插入图片描述

rsync -avz --delete --password-file=/opt/rsync_passwd fsj@192.168.190.100::wwwky31 /opt/data

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3发起端配置 rsync+inotify

使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

修改rsync源服务器配置文件
vim /etc/rsyncd.conf
......
read only = no											#关闭只读,上行同步需要可以写
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
rsync --daemon	
netstat -anpt | grep rsyncchmod 777 /var/www/html/
调整 inotify 内核参数
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

在这里插入图片描述

安装 inotify-tools 用 inotify 机制还需要安装 inotify-tools,以便提供 inotifywait、inotifywatch 辅助工具程序,用来监控、汇总改动情况。
inotifywait:可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一有变动立即输出结果。
inotifywatch:可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。

cd /opt
tar zxvf inotify-tools-3.14.tar.gz
cd /opt/inotify-tools-3.14
./configure
make && make install

在这里插入图片描述
在这里插入图片描述

然后另外再开启一个新终端向 /var/www/html 目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。
inotifywait -mrq -e modify,create,move,delete /var/www/html

在这里插入图片描述
在这里插入图片描述

在另外一个终端编写触发式同步脚本(注意,脚本名不可包含 rsync 字符串,否则脚本可能不生效)

yum install -y rsync
//安装rsync服务

在这里插入图片描述

cd /opt
tar zxvf inotify-tools-3.14.tar.gz 
cd /opt/inotify-tools-3.14
./configure
make && make install

在这里插入图片描述

vim inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/opt/rsync_passwd /vopt/data/fsj@192.168.190.100::wwwky31/"
#使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
doif [ $(pgrep rsync | wc -l) -le 0 ] ; then#如果rsync未在执行,则立即启动$RSYNC_CMDfi
done

在这里插入图片描述

chmod +x inotify.sh

在这里插入图片描述

echo admin123 > /opt/rsync_passwd
chmod 600 /opt/rsync_passwd

在这里插入图片描述
在这里插入图片描述

4、使用rsync快速删除大量文件

使用rm -rf *删除大量文件时,效率较低。

此时,利用rsync的替换原理,结合–delete选项,可以实现快速删除大量文件,比如服务的缓存。

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

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

相关文章

博弈论:gym104065j

https://vjudge.net/contest/587311#problem/J 我也不知道我在此题中学到了什么套路 结论:你选的数必须尽量接近 s u m 3 \frac {sum} 3 3sum​,然后这个就是解 因为另外两人选的是和你的数相比不可能更接近,所以必然一个大一个小 唯一的…

2.9 深入GPU硬件架构及运行机制

五、GPU技术要点 1.SMID和SIMT SIMD(Single Instruction Multiple Data)是单指令多数据,在GPU的ALU(在Core内)单元内,一条指令可以处理多维向量(一般是4D)的数据。比如&#xff0c…

sklearn 机器学习基本用法

# # 科学计算模块 # import numpy as np # import pandas as pd # # 绘图模块 # import matplotlib as mpl # import matplotlib.pyplot as plt # from sklearn.linear_model import LinearRegression # from sklearn import datasets # from sklearn.model_selection import t…

宅在家里也能干的副业,每天挣60—300元,人人可做

想在家搞副业,每天挣60-300元,大家觉得难吗?我告诉你,一点也不难。找对路子,足不出户也能搞钱。今天我就给大家分享一下三个网上靠谱的副业,门槛低上手快,只需一部手机,每天利用碎片…

Hazelcast系列(三):hazelcast集成(服务器/客户端)

系列文章 Hazelcast系列(一):初识hazelcast Hazelcast系列(二):hazelcast集成(嵌入式) Hazelcast系列(三):hazelcast集成(服务器/客户端) Hazelcast系列(四):hazelcast管理中心 …

动态规划:918. 环形子数组的最大和

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《算法》 文章目录 前言一、题目解析二、解题思路解题思路状态表示状态转移方程初始化填表顺序返回值 三、代码实现总结 前言 本篇文章仅是作为小白的我的一些理解,,…

docker安装skyWalking笔记

确保安装了docker和docker-compose sudo docker -v Docker version 20.10.12, build 20.10.12-0ubuntu4 sudo docker-compose -v docker-compose version 1.29.2, build unknown 编写docker-compose.yml version: "3.1" services: skywalking-oap:image: apach…

ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?

目录 疑问 编译、链接和装载:拆解程序执行 ELF 格式和链接:理解链接过程 小结 疑问 既然我们的程序最终都被变成了一条条机器码去执行,那为什么同一个程序,在同一台计算机上,在 Linux 下可以运行,而在…

《机器学习》第5章 神经网络

文章目录 5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 全局最小与局部最小5.5 其他常见神经网络RBF网络ART网络SOM网络级联相关网络Elman网络Boltzmann机 5.6 深度学习 5.1 神经元模型 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它…

sql 注入(1), union 联合注入

sql 注入, union 联合注入 一, 参数分类 根据可控参数的类型不同, 对注入类型分类: 1. 数字型select * from table where id1 2. 字符型select * from table where usernameroot 3. 搜索型select * from table where id like %root% 4. 关于注释:注入时, 在查询参数中使用注…

如何做好数据分析中的数据可视化?

数据可视化在数据分析中扮演着重要的角色,它帮助我们更好地理解和传达数据的特征、趋势和规律。以下是关于如何做好数据分析中的数据可视化的详细介绍。 一、准备工作 1. 理解数据 在进行数据可视化之前,首先要对数据有一个清晰的理解。了解数据的来源…

Yakit工具篇:简介和安装使用

简介(来自官方文档) 基于安全融合的理念,Yaklang.io 团队研发出了安全领域垂直语言Yaklang,对于一些无法原生集成在Yak平台中的产品/工具,利用Yaklang可以重新编写 他们的“高质量替代”。对于一些生态完整且认可度较高的产品,Y…

JavaScript 通过数组对JSON key字段进行排序

这里我以vue为例 不过json排序用的js方式 任何前端项目都可以通过js完成 我们组件代码现在是这样的 <template><div><div v-for "item in navCateList" :key "item.id">{{ item.name }}</div></div> </template>&…

使用.NET实现WOL唤醒远程开机

文章目录 1. 背景2. 关于 WOL2.1 WOL 工作原理2.2 开启网卡唤醒功能 3. 快速验证3.1 局域网 Wake on Lan 应用3.2 Ubuntu 的 etherwake 命令4. 代码实现4.1 创建.NET控制台应用程序4.2 编写代码4.3 运行应用程序 5. 最后 1. 背景 家居自动化是现代智能家居的重要组成部分&…

[ROS2系列] ubuntu 20.04测试rtabmap

目录 背景&#xff1a; 一、配置 turtlebot3 二、安装RTAB-Map ROS2包&#xff1a; 三、启动 Turtlebot3 模拟器&#xff1a; 四、启动 RTAB 地图&#xff1a; 五、启动导航&#xff08;nav2_bringup应安装软件包&#xff09;&#xff1a; 背景&#xff1a; 1、设备&…

矩阵键盘行列扫描

/*----------------------------------------------- 内容&#xff1a;如计算器输入数据形式相同 从右至左 使用行列扫描方法 ------------------------------------------------*/ #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c;头文件包含…

杀死僵尸进程ZooKeeperMain

关闭Hadoop后jps发现还有个进程ZooKeeperMain没有关闭&#xff0c;使用kill -9 <>也没有用&#xff0c;这种就是僵尸进程&#xff0c;需要用父进程ID来杀死 解决方法 话不多说&#xff0c;直接上解决方案&#xff0c; 1. 第一步 清楚需要关闭的进程ID&#xff0c;我…

项目配置vue.config jsconfig babel.config .prettierc .env .eslintrc

.env 在一个产品的前端开发过程中&#xff0c;一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境&#xff0c;然后才能正式的发布。对应每一个环境可能都会有所差异&#xff0c;比如说服务器地址、接口地址、websorket地址…… 等等。在各个环境切换的时候&am…

小程序 | 小程序后端用什么语言开发比较好

目录 ♣️ 引言 选择合适的后端语言 推荐使用Node.js Node.js 的优点 其他备选语言 ♣️ 小结 ♣️ 引言 小程序的兴起已经成为了当今移动互联网时代的热点之一&#xff0c;而小程序后端的好坏直接影响着小程序的使用体验&#xff0c;因此&#xff0c;选择一种好的语言来…

一键批量转换,轻松将TS视频转为MP4视频,实现更广泛的播放和分享!

在享受精彩视频内容的同时&#xff0c;有时我们可能会面临一个问题&#xff1a;某些视频格式可能不太适合我们的播放设备或分享平台。特别是TS格式的视频&#xff0c;在一些情况下可能无法直接播放或上传。但是不用担心&#xff0c;因为我们为您提供了一款强大的视频剪辑工具&a…