当前位置: 首页 > 软件库 > 应用工具 > 文件管理器 >

FileSystemMonitor

文件系统监听器
授权协议 Apache
开发语言 Python
所属分类 应用工具、 文件管理器
软件类型 开源软件
地区 国产
投 递 者 宦子琪
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

文件系统监听器,监听某个目录下子文件及文件夹变化,包括增加移动、添加、修改、删除,该软件提供插件式编程,完成对文件系统操作监听的复杂业务。

本程序编写目的:

随着大数据、hpc、ML 等技术普遍应用,应用程序为了满足用户复杂的文件查询,需要使用数据库储存文件相关信息,这样查询速度可以得到保证。

用户的操作习惯:在页面上操作文件;同时在操作系统内部也会操作文件,这样就会出现数据库文件信息与文件系统中文件信息不匹配,怎么解决?各类语言及操作系统均有一些组件可以使用,都需要研发人员进行组装,于是我自己弄了一个文件系统监听器。

该监听器监听某个目录下子文件及文件夹变化,包括增加移动,添加,修改,删除。

本程序提供记录日志的功能:

  • 用户不经过应用程序直接在文件系统中进行操作时(这些操作在监听的目录中),本程序会在日志文件中记录下来。

  • 日志按照时间进行分割,单位(小时),7 天一循环。

本程序对开发者提供自定义插件功能:

  • 开发者根据默认插件类编写自定义的插件,同时重写默认插件的方法,以实现自定义的功能,完成复杂的业务流程。

  • 编写插件很简单,只需要继承 DefPlugin 类即可,之后把自定义插件文件(XXX.py)放入 plugin/目录中即可

  • 本程序默认在 plugin/中提供了一个自定义插件演示的例子程序:MyPlugin.py

  • 本程序支持多个插件共同运行

友情提示:插件可以使用 resetful 方式进行跨平台/系统处理,具体参看 MyPlugin.py 中的说明。

注意:事件阻塞式操作/同步操作请在插件中自行设置超时时间及异常捕获。

本程序结构:

plugin|                 #插件目录
DefPlugin.py       #插件父类,内部已实现目录的监听日志记录工作。
MyPlugin.py        #插件演示Demo,里面记录了插件编写方式,及测试例子。
 FileSystemMonitor.py      #监听器主类,

python  FileSystemMonitor.py   #   -h    后面跟上-h参数可以查看参数说明。
SysUtils.py               #常用工具类
monitor.conf.sample       #配置文件的模板,程序运行目录中复制一份,重命名为:monitor.conf,修改一下内容即可。

本程序运行前提条件:

Python 环境:2.6+,小于3.0(3.0+ 未测试,本人只熟悉 2.X 的编程)
Python 插件:watchdog
OS:ubuntu16/centos6.7 已测,其他操作系统未测试

本程序运行方法:

在程序目录下复制 monitor.conf.sample 并重命名为:monitor.conf,修改其中内容。

按照自己的需要进行配置,如下参数:
下面是正/常日志名称
log_file_name=monitor.log
日志文件路径
log_file_path=/home/lee/monitor/log/
监听的目录
monitor_path=/home/lee/monitor/test1/

查看命令行参数
Python  FileSystemMonitor.py   #   -h    后面跟上-h参数可以查看参数说明。

参数1 : -h, 帮助提示
参数2 : -c,--conf=, 配置文件绝对路径,不配置该参数,程序默认在程序根目录找"monitor.conf"文件,文件不存在将报错。
          用法:python  FileSystemMonitor.py -c /home/lee/monitor/monitor.conf
参数3 : -p,--printlog=,屏幕打印log开关, 取值范围:debug/info/warn/error,目前只实现debug与非debug模式。
          用法:python  FileSystemMonitor.py  -p debug 

 相关资料
  • 由来 很多时候我们需要监听一个文件的变化或者目录的变动,包括文件的创建、修改、删除,以及目录下文件的创建、修改和删除,在JDK7前我们只能靠轮询方式遍历目录或者定时检查文件的修改事件,这样效率非常低,性能也很差。因此在JDK7中引入了WatchService。不过考虑到其API并不友好,于是Hutool便针对其做了简化封装,使监听更简单,也提供了更好的功能,这包括: 支持多级目录的监听(Watch

  • 文件系统是负责文件管理的操作系统的一部分。 它提供了一种机制来存储数据和访问文件内容,包括数据和程序。一些操作系统将所有内容视为Ubuntu文件。 文件系统处理以下问题 - 文件结构 - 前面已经了解可存储文件的各种数据结构。文件系统的任务是保持最佳的文件结构。 恢复可用空间 - 每当文件从硬盘中删除时,磁盘中都会创建一个可用空间。 可能有很多这样的空间需要被恢复,以便将它们重新分配给其他文件。

  • 简单的文件读写是通过uv_fs_*函数族和与之相关的uv_fs_t结构体完成的。 note libuv 提供的文件操作和 socket operations 并不相同。套接字操作使用了操作系统本身提供了非阻塞操作,而文件操作内部使用了阻塞函数,但是 libuv 是在线程池中调用这些函数,并在应用程序需要交互时通知在事件循环中注册的监视器。 所有的文件操作函数都有两种形式 - 同步(synchron

  • 文件系统提供弹性扩展的高性能文件存储服务,可为公有云上的虚拟机提供共享存储服务。 文件系统提供弹性扩展的高性能文件存储服务,可为公有云上的虚拟机提供共享存储服务。 目前已对接阿里云的NAS文件系统以及华为云的SFS弹性文件服务。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “存储/文件存储/文件系统” 菜单项,进入文件系统页面。 新建文件系统 该功能用于创建文件系统。 在文件系统

  • 文件系统组件集成了 PHP 生态中大名鼎鼎的 League\Flysystem (这也是 Laravel 等诸多知名框架的底层库)。通过合理抽象,程序不必感知存储引擎究竟是本地硬盘还是云服务器,实现解耦。本组件对常用的云存储服务提供了协程化支持。 安装 # 首先执行 composer require hyperf/filesystem # 使用阿里云 OSS 适配器时执行 composer req

  • readFile(object) 文件异步读取,批量读取接口 手Q版本:7.8.0 函数参数object属性: 属性名 类型 是否必填 说明 file Array 是 要读取的文件数组 success Function 否 接口调用成功回调 fail Function 否 接口调用失败回调 complete Function 否 接口调用完成回调 object.file 文件数组 属性名 类型 是