热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Inotify实现实时备份与调优

Inotify是一种强大的、细粒度的、异步的文件系统监控机制,linux内核2.6.13起,加入了Inotify支持,通过Inotify可

Inotify是一种强大的、细粒度的、异步的文件系统监控机制,linux内核2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,Inotify就可以监控文件系统下的变化。

==============================================================

安装Inotify

1)查看内核是否支持

uname -r

yum install -y inotify-tools




2)检查安装

rpm -qa|grep inotify



3)
Inotify-tools提供的两个工具

inotifywait:通过inotify API等待被监控文件上的相应事件并返回监控结果。

inotifywatch:用于收集关于被监视的文件系统的统计数据。

inotifywait:

-m :实时监控。

-d:后台运行。

-r:递归,对子目录监控。

-e:监控事件。以下

access:检测文件访问事件。

close_write:写入关闭事件。

modify:文件发生变化。

attrib:文件属性变化事件。

delete:文件被删除。

--timefmt :当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式,此时间格式可用的格式符可以通过strftime的手册页获取;--timefrt后常用的参数是'%d/%m/%y %H:%M';

--format :自定义inotifywait的输出格式,如--format '%T %w %f';常用的格式符如下:

%w:显示被监控文件的文件名;

%f:如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;

%T:使用--timefmt选项中自定义的时间格式.

eg. inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write /data #输出时间

eg. innotifywait -mrq --format '%w%f' -e create,close_write,delete /data #简化输出

-m :永远监控,实时监控。

-d:后台运行。

-q:仅打印监控事件的信息。

-r:递归,对子目录监控。

-e:监控事件。以下

access:检测文件访问事件。

close_write:写入关闭事件。

modify:文件发生变化。

attrib:文件属性变化事件。

delete:文件被删除。

--timefmt :当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式,此时间格式可用的格式符可以通过strftime的手册页获取;--timefrt后常用的参数是  '%d/%m/%y %H:%M';

--format :自定义inotifywait的输出格式,如--format '%T %w %f';常用的格式符如下:

%w:显示被监控文件的文件名.

%f:如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;

%T:使用--timefmt选项中自定义的时间格式.

eg. inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write /data #输出时间.

eg. innotifywait -mrq --format '%w%f' -e create,close_write,delete /data #简化输出.

关于inotify实现实时同步的脚本

inotifywait=/bin/inotifywait
dirbak=/data
$inotifywait -mrq --format '%w%f' -e modify,delete,create,attrib $dirbak\
|while read file
docd $dirbak/bin/rsync -az --delete ./ rsync://rsync_backup@10.0.0.7/backup --password-file=/etc/rsync.password &echo "${file} is bak_file_`date +%F:%T`" >>/tmp/rsync.log 2>&1
done

&:让rsync在后台队列中运行,不需要等到执行完后再循环。

==========================================

关于inotify的调优

/proc/sys/fs/inotify/max_user_watches :设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)。
/proc/sys/fs/inotify/max_queued_events :设置inotify实例时间(event)队列可容纳的时间数量。
/proc/sys/fs/inotify/max_user_instances :每个用户可以运行inotifywait或inotifywatch的进程数。 默认128不需要设了。

如果访问量大可以往上调,调整采用echo方式,写入rc.local即可。

==========================================

总结

优点:监控文件系统事件变化,通过inotify+rsync实现实时数据同步。

缺点:  如果大于200个文件(10-100k),同步会延迟。

============================

希望我的文档对你有所帮助,我会继续更新的

============================


推荐阅读
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • top命令使用方法及解读
    本文介绍了top命令的使用方法和解读,包括查看进程信息、系统负载、内存状态、CPU占用等内容。通过top命令可以持续观察系统上运行的进程,并了解系统负载情况,及时关闭一些进程以减轻系统负担。同时,还介绍了top命令的快捷键和安全模式启动方法。通过本文的学习,读者可以更好地使用top命令来管理系统进程。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
author-avatar
xkxk22
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有