我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux服务器间文件实时同步的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux服务器间文件实时同步的实现

使用场景

现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/paul/rsync/ )。

数据镜像备份工具Rsync

Rsync是一个非常快速和灵活的文件复制工具。它支持本机或者是和远程服务器间的文件复制。Rsync使用了delta-transfer算法,它只需要传送源端和目标端的文件差异部分,大大减少了网络带宽的消耗和复制耗费的时间。Rsync多用于数据备份和镜像。

Rsync使用了快速检查算法,通过比较文件大小或最后修改时间的变化来判断文件是否需要同步。

Rsync连接远程主机有两种方式:使用ssh或rsync daemon。这里使用Rsync方式来实现远程文件备份。

Rsync的安装与操作

安装Rsync

分别在服务器A和服务器B的terminal执行:


sudo yum install rsync

安装完毕后,会发现rsync的配置文件位于 etc/rsyncd.conf 。该文件使用daemon方式同步时需要使用,此处暂不介绍。

配置服务器A和B之间的免密登录

服务器A执行:


ssh-keygen
ssh-copy-id 服务器B的IP地址

创建源端目录和目标端目录

在服务器A中:


mkdir /home/paul/rsync

在服务器B中:


mkdir /home/paul/rsync

在服务器A创建测试文件


echo "Hello from Server A" >> /home/paul/rsync/demo.txt

执行文件传送命令

在服务器A运行:


# (1)
rsync -avPz --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync
# (2)
rsync -avPz --delete --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync

会发现在demo.txt也出现在了服务器B中/home/paul/rsync目录。

命令解析:

(1) 将服务器A中的/home/paul/rsync目录内的文件复制到服务器B(192.168.100.130)的/home.paul/rsync中。

(2) 比较目标端和源端的文件,如果目标端的文件在源端不存在,在目标端删除该文件。

Rsync存在的问题

Rsync仅是一个文件复制工具,它无法对源端文件的增删改操作进行监听。在源端做出更改后,需要执行rsync命令才能将变更同步到目标端。

Rsync在每次同步前需要扫描整个目录。如果源目录内的文件数量比较多,扫描可能需要耗费较多的时间。
为了满足实时监听的要求,我们需要引入另一个工具:inotify。

文件系统事件监听工具inotify

inotify-tools为inotify提供一个简单接口。它是一个c语言编写的库,同时也包含命令行工具。

inotify-tools的详细介绍请点击: https://github.com/rvoicilas/inotify-tools/wiki

inotify-tools的安装

对于centos7系统,依次执行:


yum install -y epel-release
yum --enablerepo=epel install inotify-tools

使用inotifywait命令进行事件监听

监听脚本如下(inotifywait-rsync.sh):


inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /home/paul/rsync/ | while read file
do
rsync -avPz --progress /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
rsync -avPz --delete /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
echo "${file} was synchronized"
done

参数解析

  • -m 保持持续监听状态,如果不写该参数,inotifywait会在监听到一次事件之后退出。
  • -r 递归方式监听目录。
  • -q 安静模式,打印输出较少的内容。
  • --timefmt 指定时间的输出格式。
  • --format 指定事件输出的格式。
  • -e 设置监听的事件类型。这里监听增删改和metadata的变更。

对于每次触发的监听时间,inotifywait会执行do和done之间的代码。在这里,我们调用之前所说的rsync命令进行文件同步。

监听脚本加入crontab


crontab -e
* * * * * sh /home/paul/inotifywait-rsync.sh

参考资料
https://rsync.samba.org
https://github.com/rvoicilas/inotify-tools/wiki

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux服务器间文件实时同步的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux服务器间文件实时同步的实现

使用场景现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/paul/rsync/ )。 数据镜像备份
2022-06-04

Linux服务器时间同步怎么实现

这篇文章主要讲解了“Linux服务器时间同步怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux服务器时间同步怎么实现”吧!一、server端安装ntp校时包,修改独立主机rm
2023-06-16

linux两台服务器实现自动同步文件

服务器B(172.17.166.11)上开机或者重启会自动拉取服务器A(172.17.166.10)上指定目录下所有文件 1、创建服务器B到服务器A的互信(1)服务器B上执行 ssh-keygen -t rsa 一路回车 (2)服务器B上执
2022-06-03

linux中怎么实现时间同步

这期内容当中小编将会给大家带来有关linux中怎么实现时间同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。方法1:与一个已知的时间服务器同步代码如下:ntpdate time.nist.gov其中 ti
2023-06-13

同步阿里云服务器时间实现准确的时间管理

阿里云服务器是许多企业进行数据存储、计算和应用部署的首选平台。然而,由于地理位置、网络环境、硬件设备等多方面因素,阿里云服务器的时间可能会出现误差。为了确保工作的准确性,同步阿里云服务器时间是非常重要的。本文将详细介绍如何实现阿里云服务器时间的同步。同步阿里云服务器时间的方法:使用阿里云的API接口:阿里云提供了
同步阿里云服务器时间实现准确的时间管理
2023-10-29

阿里云服务器时间同步的实现与优化

随着云计算技术的发展,越来越多的企业和个人开始使用阿里云服务器。在使用阿里云服务器的过程中,时间同步是一个非常重要的问题。本文将详细说明如何实现阿里云服务器时间同步,并提供一些优化策略。一、阿里云服务器时间同步的实现阿里云服务器的时间同步主要通过NTP协议实现。NTP协议是一种同步网络时间的标准协议,它通过网络交
阿里云服务器时间同步的实现与优化
2023-11-09

Linux系统怎么实现文件同步

Linux系统怎么实现文件同步,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Linux系统实现文件同步的方法一、准备源文件地址:192.168.0.143目标文
2023-06-28

shell脚本实现本地文件与服务器文件同步

为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上。 1、shell文件代码#!/bin/sh read -t 30 -p "请输入项目名:" name echo
2022-06-04

linux搭建FastDFS文件服务器的实现步骤

目录1.软件包2.安装gcc3.安装libfastcommon4.安装FastDFS5.安装tracker6.安装storage7.测试图片上传8.安装Nginx。9.安装fastdfs-nginx-module本文主要介绍在linux服务
2022-06-04

Linux文件同步到本地怎么实现

要将Linux系统中的文件同步到本地,可以通过以下几种方式实现:使用rsync命令:rsync命令是一种高效的文件同步工具,可以在本地和远程系统之间同步文件和目录。使用rsync命令可以方便地将Linux系统中的文件同步到本地。例如,要将远
2023-10-27

阿里云服务器授时教程实现精准时间同步

随着云计算的普及,越来越多的企业和个人开始使用阿里云服务器。其中,时间同步是云计算中非常重要的一个环节,它可以保证服务器的正常运行和数据的安全性。本文将详细介绍如何在阿里云服务器上实现精准的时间同步。正文:一、什么是时间同步时间同步是指计算机系统或网络设备能够自动或手动地获取时间信息,并将其与本地的时间保持一致。
阿里云服务器授时教程实现精准时间同步
2023-12-11

shell脚本如何实现本地文件与服务器文件同步

这篇文章将为大家详细讲解有关shell脚本如何实现本地文件与服务器文件同步,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行
2023-06-09

阿里云内部NTP服务器实现时间同步的神秘武器

NTP(NetworkTimeProtocol)是一种在网络上同步时间的标准协议,广泛应用于各种网络环境。在阿里云内部,NTP服务器也发挥着重要作用,确保了各个系统和设备的时间准确同步。NTP服务器是阿里云内部时间同步的神秘武器,它通过网络向全球范围内的其他设备发送时间信息,帮助这些设备准确地调整时间。NTP服务
阿里云内部NTP服务器实现时间同步的神秘武器
2023-11-13

怎么用Linux系统中的rsync实现文件同步

这篇文章主要介绍了怎么用Linux系统中的rsync实现文件同步的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Linux系统中的rsync实现文件同步文章都会有所收获,下面我们一起来看看吧。在Linux系
2023-06-28

Linux系统中如何同步服务器时间

这篇文章主要为大家展示了“Linux系统中如何同步服务器时间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统中如何同步服务器时间”这篇文章吧。Linux时间的操作的常见命令date命
2023-06-27

编程热搜

目录