使用rsync和inotify实时备份CentOS服务器数据(详解)

news2024/12/26 21:10:21

简介

在日常运维中,确保服务器上的数据安全是至关重要的。数据丢失或损坏可能会导致灾难性后果,因此定期备份数据是一个明智的做法。本文LZ将向您展示如何使用 rsync 和 inotify-tools 工具在 CentOS 系统上设置实时备份,以确保您的数据始终保持最新。

实现原理

在这里插入图片描述

  1. 服务器 A 上的的数据变动:当服务器 A 上的文件或目录发生修改、创建、删除或移动时,inotify 监听这些文件系统事件。
  2. 服务器 A 上的 inotify:inotify 是一个 Linux 内核特性,它可以监控文件系统事件,并在事件发生时发出通知。通过 inotify,服务器 A 可以捕捉到数据的变动。
  3. 数据同步:当服务器 A 上的数据发生变动时,rsync 被触发并启动数据同步过程。
  4. rsync:rsync 是一个强大的文件同步工具,它可以在源目录和目标目录之间进行文件和目录的增量同步。在这种情况下,服务器 A 的变动将被同步到服务器 B 上。
  5. 服务器 B 上的 inotify:类似于服务器 A,服务器 B 上也有一个 inotify 进程在监听文件系统事件。
  6. 服务器 B 上的数据同步:一旦服务器 B 的 inotify 捕捉到同步过来的数据变动,rsync 将再次被触发,并将变动同步到服务器 B 的相应目录中,确保数据的实时备份。

这种基于 rsync 和 inotify 的实时备份机制能够实现服务器数据的快速同步,并提供了实时保护和恢复能力。无论是在文件级别的变动还是整个目录的变动,rsync 和 inotify 结合起来可以确保数据的一致性,并保持备份的最新状态。

步骤

1. 确保服务器 A 和服务器 B 之间的 SSH 连接

确保服务器 A 和服务器 B 之间已建立 SSH 连接。可以使用以下命令测试 SSH 连接:

ssh 用户名@服务器B

请将 “用户名” 替换为服务器 B 的用户名,然后输入密码进行身份验证。确保可以成功连接到服务器 B。

2. 安装 rsync 和 inotify-tools

首先,确保服务器A和服务器B已经安装了 rsync 和 inotify-tools。打开终端并执行以下命令(:如果您是centos8及以上则使用yum升级版命令:dnf命令下载):

sudo yum install rsync inotify-tools

3. 在服务器 A 上创建备份目录

选择一个适当的目录作为备份目录,并确保您具有写入权限。在终端中执行以下命令:

sudo mkdir /path/to/backup
sudo chmod +x /backup

4. 创建备份脚本

使用您喜欢的文本编辑器创建一个新的备份脚本文件,例如:

sudo vi /path/to/backup_script.sh

将以下内容复制并粘贴到脚本文件中:

#!/bin/bash

SOURCE_DIR="/path/to/source"  # 要备份的源目录
DESTINATION="用户名@服务器B:/backup"  # 服务器 B 的用户名和备份目录路径

inotifywait -m -r -e modify,create,delete,move "${SOURCE_DIR}" |  # 监听数据变动
while read path action file; do
    rsync -az --delete "${SOURCE_DIR}/" "${DESTINATION}"  # 使用 rsync 进行数据同步
done

请确保将脚本中的 /path/to/source 替换为实际要备份的源目录路径,以及 用户名@服务器B:/backup 替换为服务器 B 的用户名@IP地址:备份目录路径

5. 赋予权限并启动脚本

保存脚本文件后,赋予它执行权限:

sudo chmod +x /path/to/backup_script.sh

最后,在终端中运行脚本以启动备份过程:

sudo nohup /path/to/backup_script.sh &

使用 nohup 命令可确保脚本在后台持续运行,即使关闭终端连接也不会停止备份进程。

6. 监控备份过程

为了确保备份过程正常运行,您可以定期监控备份日志。您还可以设置通知机制,以便及时了解备份状态。

拓展考虑

1. 监控备份目录容量

确保备份目录的容量足够存储所有的备份数据。定期检查备份目录的容量使用情况,并确保有足够的可用空间以容纳备份数据。

2. 定期清理旧的备份

备份数据可能会占用大量磁盘空间,特别是在进行长时间的实时备份后。定期清理旧的备份可以释放磁盘空间并确保备份目录不会过度膨胀。您可以根据自己的需求制定清理策略,例如保留最近几天或几周的备份,并删除更早的备份。

3. 高级备份选项

如果您的数据非常重要,可以考虑使用更高级的备份选项,例如增量备份或基于快照的备份。增量备份只备份源目录中发生更改的文件,可以减少备份所需的时间和存储空间。基于快照的备份可以创建数据的一致性快照,并在备份过程中锁定文件以确保数据的完整性。

4. 测试备份的可恢复性

定期测试备份的可恢复性非常重要。选择一些备份文件并尝试将其恢复到另一个位置,确保备份数据可以正确还原。通过测试备份的可恢复性,您可以确保在发生故障或数据丢失时能够及时恢复重要数据。

5. 自动化备份脚本的启动

为了确保服务器重启后备份脚本能够自动运行,您可以将脚本添加到系统的启动项中。具体的步骤可能因 CentOS 版本而有所不同。您可以查阅相关文档或使用工具如 systemctlrc.local 来配置自动启动。

结论

使用 rsync 和 inotify-tools 工具可以轻松实现 CentOS 服务器数据的实时备份。通过设置备份脚本并监控文件系统事件,您可以确保数据始终保持最新并能够在需要时进行快速恢复。请记住定期监控备份过程并测试备份的可恢复性,以确保数据的完整性和可靠性。

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

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

相关文章

Google I/O:谷歌AR看似不紧不慢,实则暗藏玄机

在今天举行的Google I/O大会上,尽管AI是全场最大的关注点,也还是有一系列AR相关技术和应用更新,比如:ARCore进行更新、推出新的Geospatial Creator等等。 ARCore面世已有5年时间,谷歌每年都在持续推动AR技术的发展。相…

Webpack 核心概念

文章目录 Webpack 核心概念概述安装webpack简单使用配置webpack.config.js配置package.json打包 核心概念modeentry 和 outputentry配置说明output配置说明配置单入口配置多入口 loader安装babel、babel-loader、core-js配置.babelrc配置webpack.config.js配置package.json编写…

【Linux】9. 习题①

2022-09-17_Linux环境与版本 1. 命令拓展(了解) linux查看cpu占用的命令是什么? A.top B.netstat C.free D.df 【答案解析】A 2022-09-24_Linux环境与版本 2. 命令拓展(了解) 以下哪个命令输出Linux内核的版本信息: A.uname -r B.vmstat C.sar D.sta…

wms仓库管理对企业的重要性

一、什么是wms仓库管理? WMS是仓库管理系统的缩写,它提供了一个可视化、智能化的平台,帮助公司进行仓库作业的管理和优化。WMS系统可以支持各种类型的仓库,包括零件、分销、批发、跨境电商等等,并提供多种功能&#xf…

如何查找下载外文文献,超强外文文献检索网站排名

英文文献哪里找,下面小编给大家推荐几个超强英文文献下载网站,推荐排名如下: 第4名:sci-hub 这个网站很多科研人都知道,优点是可以免费下载英文文献,缺点是网站不太稳定经常换域名,而且需要你明…

Zoho Desk获G2“2023年优秀软件”称号

备受瞩目的G2年度优秀软件评选结果终于在近期公布了。该奖项旨在表彰过去一年,在软件行业有突出亮点的厂商和产品。在今年的评选中,除了坚持过往满意度、市场占有率等评选维度,额外新增了英国、法国及德国三个地区的产品名单,还增…

5年测试被裁,去面试差点被问哭了······

我的个人背景非常简单,也可以说丝毫没有亮点。 学历普通,计算机专业二本毕业,毕业后出来就一直在一家小公司,岁月如梭细,算了下至今从事软件测试已经5年了,也点点点了五年,每天都是重复的工作&…

使用遗传算法解决一维下料问题(一、实现思路分析)

目录 一、前言 二、概念 三、术语定义 四、问题描述 五、实现思路 1、遗传算法 2、一维下料和遗传算法结合 六、下文预告 一、前言 三年前我就折腾过一维下料问题了,当时查遍百度、谷歌,阅尽硕博论文,最终采用自研算法解决了一维下料…

天津值得信赖的python培训哪家好

近些年越来越多人涌入了互联网大厂,许多人选择去培训机构系统的学习Python,那么好的Python培训机构的标准是什么样的呢?我们来一点点说。 一、为什么要学python python是目前大火的的编程语言之一。至于为什么火,不名思意&#…

【Android】小米手机 Root全攻略:轻松获取手机最高权限

▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ 备份手机资源小米云服务小米助手备份方式 2️⃣ 解锁BL开启解锁等168个小时(七天)miflash_unlock解锁设备 3️⃣ 获取并安装MIUI完整包4️⃣ 刷机包解包,获取boot.img解压MIUI安装包payload…

C++ | std::tuple

std::tuple 文章目录 std::tuple成员函数及非成员函数模板参数成员函数Non-member functions非成员函数辅助类 构造函数获取元祖元素值元素个数元素的类型Reference 类模板 std::tuple 是不同类型值的固定大小集合。 它是 std::pair 的泛化。 可以当做一个结构体使用 ,不需要创…

【ChatGPT】科技革命促生互联网时代 ChatGPT浪潮打乱时代布局 人工智能新时代下的发展前景

目录 科技革命促生互联网时代 科技进步伴随着大国崛起 科技革命的发展 互联网时代的到来 ChatGPT浪潮来袭 资本市场当前的热潮 人工智能新时代下我们何去何从 开放注册两个月用户数破亿,ChatGPT的爆火也标志着时代的浪潮将要来袭,由科技革命促生的…

C语言200行代码实现简易三子棋

前言 三子棋应该是是我们最早接触到的棋类游戏,用C语言实现三子棋对初学者来说是一种不错的锻炼 编写三子棋只需要用到数组、函数和生成随机数的知识,所以比较适合成为编程学习者编写的第一个小游戏。 一.代码实现 第一部分是源码复制就可以使用&…

WiFi(Wireless Fidelity)基础(六)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

未面试蓄力,redis肝起来

目录 1、为什么要使用Redis做缓存?2、为什么Redis单线程模型效率也能那么高?3、Redis6.0为什么要引入多线程呢?4、Redis常见数据结构以及使用场景字符串(String)哈希(Hash)列表(list)集合&#…

【前端提效】--Chrome浏览器开发者工具 DevTools 使用技巧

介绍一下 DevTools 的一些好用的技巧,它能够很好地帮助你提高生产力和解决问题的能力。 1、打开命令行 或者使用:快捷键 Ctrl Shift P (Mac: ⌘ Shift P ) 命令行可以做很多事情,包括但不限于截图、更换主题等 2、控制 DevT…

Inno Setup Compiler的安装和使用详解

安装:官网最新下载最新版 最新版不支持中文哈,安装的时候直接选英文就好 安装注意事项:在安装过程中有一个 询问是否要 安装一个加密版本的(可根据自己的需求挑选–我就没有) 使用: 1.打开应用程序进入到…

【微信小程序】微信小程序的接口调入 获取太阳码 根据返回值的类型进行接收,微信接口可能直接返回图片,也可能返回一个错误信息的json,同时兼容处理这两种情况

目录 事件起因环境和工具操作过程解决办法遇到的一点问题结束语 事件起因 在开发一个关于微信小程序的过程中,有一个这样的需求,要求生成微信小程序的太阳码,然而这个东西的请求方式我们是这样的:我作为后端服务去请求这个太阳码…

【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)

例题来源:侯忠生教授的《无模型自适应控制:理论与应用》(2013年科学出版社)。 👉对应书本 4.2 单输入单输出系统(SISO)紧格式动态线性化(CFDL)的无模型自适应控制(MFAC) 例题4.1 题目要求 matlab代码 clc; clear al…

ASEMI代理ADXL345BCCZ-RL7原装ADI车规级ADXL345BCCZ-RL7

编辑:ll ASEMI代理ADXL345BCCZ-RL7原装ADI车规级ADXL345BCCZ-RL7 型号:ADXL345BCCZ-RL7 品牌:ADI /亚德诺 封装:LGA-14 批号:2023 安装类型:表面贴装型 引脚数量:14 工作温度:-55C~105C…