Linux利用inotify和rsync服务实现数据实时同步的原理解析 (linux连接wifi)

教程大全 2025-07-14 11:07:15 浏览

文件定时同步的实现:

利用rsync结合cron计划任务实现:

rsync -av –delete /data/ 10.0.0.12:/back

-a:保留文件属性

-v:显示过程

-delete:如果源文件没有的,目标文件里面有,就把目标文件里面的删除掉

文件实时同步的实现:

前提:

文件发生发生变化的时候就触发同步,但是触发同步需要一个依赖文件状态变化的功能。

inotify是系统内核的一个监控服务,属于操作系统内核的一个特有机制,用于监控文件的信息变化。

查看内核是否支持inotify;

[root@LAP1>inotify-tools包主要工具:

inotifywait 命令:

inotifywait [ options ] file1 [ file2 ] [ file3 ] [ … ]

选项:

-m, –monitor 始终保持事件监听

-d, –daemon 以守护进程方式执行,和-m相似,配合-o使用

-r, –recursive 递归监控目录数据信息变化

-q, –quiet 输出少量事件信息

–exclude 指定排除文件或目录,使用扩展的正则表达式匹配的模式实现

–excludei 和exclude相似,不区分大小写

-o, –outfile 打印事件存到文件中,注意:使用绝对路径

-s, –syslogOutput 发送错误到syslog相当于标准错误输出

–timefmt 指定时间输出格式

–format 定义输出格式;即实际监控输出内容

-e 指定监听指定的事件,如果省略,表示所有事件都进行监听

例如:

# 10.0.0.11

[root@LAP1>rsync工具

rsync有三种工作方式:

区别:

前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一个端口上,等待客户端的连接。

本地模式:

rsync [OPTION…] SRC… [DEST]

例如:

[root@LAP1>两种方式实现rsync 服务器

rsync即可以作为服务器端,也可以作为客户端程序。

方式一:通过rsync守护进程的方式实现rsync服务

#在备份服务器启动 rsync 进程

[root@bakup_server ~]# rsync –daemon #–daemon选项表示启动为守护进程

Failed to parse config file: /etc/rsyncd.conf #必须要有这个配置文件才能启动成功

[root@bakup_server ~]# touch /etc/rsyncd.conf #需要创建这个配置文件才能正常启动

[root@bakup_server ~]# rsync –daemon #启动rsync守护进程

[root@bakup_server ~]# ss -ntl #守护进程启动后会监听873端口State Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 5 0.0.0.0:873 0.0.0.0:*#设置rsync服务器的共享信息[root@bakup_server ~]# cat /etc/rsyncd.conf #等号之间可以有空格[backup] #定义存放数据共享的名字path = /bakup #真实的路径,存放共享文件的路径 (利用rsync将这个目录共享出去,共享出去的名字叫做bakup)read only = no #指定可读写,默认只读

[root@bakup_server ~]# rsync –daemon #更改问配置文件以后需要重新开启守护进程才会生效

[root@bakup_server ~]# setfacl -m u:nobody:rwx /bakup/ #指定目录给nobody权限,默认用户以nobody访问此目录

使用客户端连接rsync备份服务器:#格式 rsync rsync://host 或者 rsync host::

客户端查看服务器的情况:[root@data_server ~]# rsync rsync://10.0.0.12 #以协议的形式访问backup #共享出来的名字

[root@data_server ~]# rsync 10.0.0.12:: #以服务的形式访问backup

#实现客户端将文件拷贝到rsync共享的目录中注意:传输的时候不管以谁的身份,都会映射为nobody,所以不用写用户名都行[root@data_server ~]# rsync /root/anaconda-ks.cfg[emailprotected]::backup

[root@bakup_server bakup]# lltotal 8-rw——- 1 nobody nobody 1526 Oct 24 17:48 anaconda-ks.cfg-rw-r–r– 1 nobody nobody 658 Oct 24 17:49 fstab

以独立服务方式运行rsync并实现验证功能

rsync-daemon:安装这个软件包以后会提供一个service服务,它会监听自己的独立端口

[root@bakup_server ~]# yum install rsync-daemon

Installed:

rsync-daemon-3.1.3-9.el8.noarch

[root@bakup_server ~]# systemctl enable rsyncd.serviceCreated symlink /etc/systemd/system/multi-user.target.wants/rsyncd.service → /usr/lib/systemd/system/rsyncd.service.

说明:

Linux利用inotify和rsync服务实现数据实时同步的原理解析

rsync默认传输文件的时候不需要验证

启用rsync的验证功能的方法:

[root@backup-centos8 ~]#dnf -y install rsync-daemon

#安装服务的时候自动创建rsync服务器的配置文件[root@centos8 ~]#vi /etc/rsyncd.confuid = root #远程用户映射到本机的用户,默认为nobody 指定以哪个用户来访问共享目录,将之指定为生成的文件所有者,默认为nobodygid = root #默认为nobody#port = 874 #可指定非标准端口,默认873/tcp#use chroot = nomax connections = 0 #不限制最大连接数ignore errors #如果有些错误,就跳过这些错误exclude = lost+found/ #跳过指定的目录,不去复制log file = /var/log/rsyncd.log # 日志所在位置pid file = /var/run/rsyncd.pid # 存放进程的pid文件lock file = /var/run/rsyncd.lock # 存放锁文件reverse lookup = no # 拒绝反向解析,不把ip解析为主机名#hosts allow = 10.0.0.0/24 # 允许连接的主机[backup] #每个模块名对应一个不同的path目录,如果同名后面模块生效 共享名path = /data/backup/ #共享的真实路径comment = backup dir #描述信息read only = no #默认是yes,即只读auth users = rsyncuser #默认anonymous可以访问rsync服务器 用于验证的账号,只有这个账号才能去访问secrets file = /etc/rsync.pas #存放密码的文件 格式: 用户名: 密码

例如:实现密码验证

[root@CentOS8 ~]# yum install rsync-daemon

[root@CentOS8 ~]# systemctl enable rsyncd –now

[root@CentOS8 ~]# cat /etc/rsyncd.confuid = rootgid = rootmax connections = 0ignore errorsexclude = lost+found/log file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pidlock file = /var/run/rsyncd.lockreverse lookup = no

[backup]path = /data/backup/comment = backup dirread only = noauth users = tomsecrets file = /etc/rsync.pas

[root@CentOS8 ~]# systemctl restart rsyncd.service

[root@CentOS8 ~]# mkdir /data/backup/ -p

[root@CentOS8 ~]# echo “tom:redhat” > /etc/rsync.pas

[root@CentOS8 ~]# chmod 600 /etc/rsync.pas#必须要修改密码文件权限,不然客户端访问的时候会提示密码错误

客户端访问:[root@CentOS8 ~]# rsync /etc/fstab[emailprotected]::backupPassword: #交互输入tom的密码

或者:[root@CentOS8 ~]# rsync /root/anaconda-ks.cfg rsync://[emailprotected]/backupPassword:

注意:不指定用户名默认就是当前系统的用户

可以提前建立一个文件,将密码放在文件中

#非交互式查看共享目录

[root@CentOS8 ~]# echo “redhat” >/etc/rsync.pas #客户端存放rsync的密码信息

[root@CentOS8 ~]# chmod 600 /etc/rsync.pas #密码文件权限修改(必须,不然会报错)

测试:[root@CentOS8 ~]# rsync –password-file=/etc/rsync.pas /root/file111 rsync://[emailprotected]/backup

inotify+rsync+shell 脚本实现实时数据同步

工作原理:

范例:inotify+rsync+shell 脚本实现实时数据同步

数据服务器:存放数据信息的服务器 10.0.0.11

备份服务器:存放备份信息的服务器 10.0.0.12

思路:利用inotidy监控事件是否发生变化,

[root@CentOS8 ~]# cat inotify_rsync.sh

#!/bin/bash

SRC=’/data/www/’ #需要同步的目录文件 #注意最后的/

DEST=’[emailprotected]::backup’ #同步到备份数据器的指定位置

rpm -q rsync &> /dev/null || yum -y install rsync #如果不存在rsync这个工具就安装它

inotifywait -mrq –exclude=”.*\.swp” –timefmt ‘%Y-%m-%d %H:%M:%S’ –format ‘%T %w %f’ -e create,delete,moved_to,close_write,attrib ${SRC} | while read DATE TIME DIR FILE; doFILEPATH=${DIR}${FILE} #需要同步的文件rsync -az –delete –password-file=/etc/rsync.pas $SRC $DEST && echo “At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync” >> /var/log/changelist.logdone

Linux技术文档操作系统

数据库运维技术服务 » Linux利用inotify和rsync服务实现数据实时同步的原理解析

香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。


linux,NFS服务,是什么

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 NFS最显而易见的优点:1、节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。 2、用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。 3、一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。 这可以减少整个网络上可移动介质设备的数量。 扩展资料:NFS 有很多实际应用。 下面是比较常见的四点:1、多个机器共享一台CDROM或者其他设备。 这对于在多台机器中安装软件来说更加便宜跟方便。 2、在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。 这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。 3、不同客户端可在NFS上观看影视文件,节省本地空间。 4、在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下。 NFS是运行在应用层的协议。 随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。 参考资料来源:网络百科-NFS网络百科-linux

各主流LinuX系统性能对比是怎么样的?免费授权使用的有哪些?

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。 它能运行主要的Unix工具软件、应用程序和网络协议。 它支持32位和64位硬件。 Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

2021年6月,根据Linux 5.14刚刚进入合并队列的char-misc-next提交,Linux 5.14正式移除了RAW驱动。

Linux系统怎么安装?

Linux安装前的准备工作1.用windows系统收集硬件信息在安装Linux之前,您需要借助Windows系统了解计算机硬件的基本信息,如内存大小、声卡、显示器、鼠标和显卡型号等。 2.设置从光盘引导系统Linux支持几种安装方式,但直接以光盘开机启动进行安装最方便和快速。 若要机器以光盘启动,需要修改BIOS的设置,将CD-ROM变更至开机顺序的第一位。 3.Linux分区Linux分区的表示方法分区就是将磁盘驱动器分隔成独立的区域,每个区域都如同一个单独的磁盘驱动器,在DOS/Windows系统下磁盘分区可分为C、 D和E盘等。 但Linux则将磁盘视为块设备文件来管理使用,它以 /dev(device的缩写)开头表示。 例: 在Linux用 “/dev/hda1”表示Windows下的C盘其中:hd 表示IDE硬盘(SCSI硬盘用sd);hda 为 第一个IDE 硬盘(第二为 hdb);/dev/hda1 为主分区,逻辑分区 从5 开始,如: /dev/hda5、/dev/hda6、/dev/hda7等。 为Linux准备分区Linux分区和Windows分区不同,不能共用。 所以需要为Linux单独开辟一个空闲的分区,最好是最后一个分区。 如图1中利用Windows下的Partition Magic(分区魔法)软件,在D盘上腾出空间创建新分区E盘(或利用已有的空闲E盘),文件类型暂设为FAT32,作为稍后创建Linux分区使用,RedHat 9.0 大约需4 ~ 5GB的空间。 4.Linux 的文件系统对于不同的操作系统,文件系统也不同。 Windows文件系统为FAT16、FAT32和NTFS。 而Linux的文件系统可分为ext2、ext3、swap和vfat。 ext2支持最多为255 个字符的文件名;ext3 是基于 ext2之上,主要优点是减少系统崩溃后恢复文件系统所花费的时间,RedHat 9.0 默认文件系统为ext3;交换区swap是被用于支持虚拟内存;Windows的FAT分区在Linux下显示为vfat文件类型。 1.用RedHat 9.0第一张安装光盘引导开机,系统在开机后会出现安装菜单。 安装菜单中提供了供用户选择的图形和文本模式的安装方式,按回车选择图形模式进行安装。 在进入图形画面的安装模式前,RedHat 9.0比以往的版本多了一个环节,那就是提示对安装光盘介质进行检测, 也可按“Skip”按钮跳过检测。 2.接着安装程序会自动检测硬件,包括视频卡(显示卡)、显示器和鼠标的配置,然后进入图形画面的安装向导。 在出现“语言选择”的画面中,我们选择“简体中文”,这样接下去的安装过程界面的文字都会改为中文。 在“键盘配置”画面中接受默认的“美国英语式”键盘。 选择“下一步”,在“鼠标配置”窗口,系统自动检测出鼠标的配置。 3.选择安装类型,安装类型包含四种不同的安装方式:个人桌面、工作站、服务器和定制。 “服务器”的安装适用于专职的服务器使用,“个人桌面”和“工作站”适合于初学者,为了让你更多地了解安装过程,我们将选择“定制”类型进行安装。 4.磁盘分区设置:确认了“定制”方式之后,系统会出现“磁盘分区设置”窗口,它提供了两种分区方式:“自动分区”和“用Disk Druid手工分区”。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐