# filtracker **Repository Path**: mskk/filtracker ## Basic Information - **Project Name**: filtracker - **Description**: No description available - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-06 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Filtracker Filtracker 是一个用于监控文件目录变化并追踪文件快照的工具。它可以实时监测文件系统的变更,比较不同快照之间的差异,并提供多种输出格式。 ## 功能特性 - **实时监控**:使用 fsnotify 库实时监控目录和文件的创建、修改、删除、重命名和权限变更 - **快照管理**:支持创建、存储和删除文件快照 - **差异比较**:比较两个快照之间的文件变化,支持 MD5 校验或时间戳对比 - **多种输出格式**:支持统计模式、仅显示名称、详细展示等多种输出格式 - **文件过滤**:灵活的文件过滤功能,支持按扩展名、路径、前缀等多种条件排除文件 - **SQLite 存储**:使用 SQLite 数据库持久化存储快照和变更记录 - **PID 文件支持**:支持写入 PID 文件,方便进程管理 ## 项目结构 ``` . ├── main/main.go # 程序入口 ├── diff/ # 快照比较模块 │ ├── diff.go # 比较快照差异 │ └── printer.go # 差异结果打印 ├── monitor/ # 文件监控模块 │ └── monitor.go # 目录监控和事件处理 ├── storage/ # 存储模块 │ └── sqlite.go # SQLite 数据库操作 ├── tracker/ # 追踪器模块 │ └── tracker.go # 快照管理核心逻辑 ├── types/ # 类型定义 │ └── types.go # 数据结构定义 └── utils/ # 工具函数 ├── file.go # 文件操作和过滤 ├── format.go # 格式化工具 ├── hash.go # MD5 哈希计算 └── time.go # 时间工具 ``` ## 安装 ```bash # 克隆仓库 git clone https://gitee.com/mskk/filtracker.git cd filtracker # 构建 go build -o filtracker main/main.go ``` ## 使用方法 ```bash # 监控当前目录 ./filtracker monitor # 监控指定目录 ./filtracker monitor -path /your/directory # 比较两个快照 ./filtracker compare -snap1 -snap2 # 查看快照列表 ./filtracker list # 查看帮助 ./filtracker help ``` ### 常用选项 - `-path`: 指定监控的目录路径 - `-use-md5`: 使用 MD5 校验代替时间戳比较文件变化 - `-stat`: 仅显示统计信息 - `-name`: 仅显示文件名 - `-detail`: 显示详细变更信息 - `-color`: 启用彩色输出 - `-exclude-exts`: 排除指定扩展名的文件(如 .log,.tmp) - `-exclude-names`: 排除指定名称的文件或目录 - `-db`: 指定数据库文件路径 ## 配置说明 ### 文件过滤 支持以下过滤选项: - `-exclude-exts`: 按扩展名排除 - `-exclude-names`: 按文件名排除 - `-exclude-paths`: 按路径排除 - `-include-exts`: 仅包含指定扩展名 - `-exclude-prefix`: 排除指定前缀 - `-exclude-suffix`: 排除指定后缀 - `-exclude-dir-names`: 排除指定目录名 ### 输出格式 - **统计模式** (`-stat`): 显示变更统计摘要 - **名称模式** (`-name`): 仅显示变更的文件名 - **详细模式** (`-detail`): 显示完整的变更详情 ## 数据类型 ### FileChange 文件变更类型: - `ChangeAdded`: 新增文件 - `ChangeDeleted`: 删除文件 - `ChangeModified`: 文件内容修改 - `ChangeMetadata`: 元数据变更(如权限) ### Snapshot 快照包含以下信息: - 快照 ID - 根目录 - 创建时间 - 文件数量 - 是否为基准快照 ## 技术栈 - **Go 1.x** - **fsnotify**: 文件系统事件监控 - **SQLite**: 数据持久化 ## 许可证 MIT License