# file-watcher **Repository Path**: waylee2015/file-watcher ## Basic Information - **Project Name**: file-watcher - **Description**: go程序监控目录文件变化 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-07-26 - **Last Updated**: 2024-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # File Watcher File Watcher 是一个用于监控文件系统变化并将变化的文件上传到 MinIO 的工具。 ## 目录结构 ```plaintext ├── cmd │ └── main.go # 项目入口文件 ├── config │ └── config.json # 配置文件 ├── go.mod # Go 模块文件 ├── go.sum # 依赖管理文件 ├── internal │ ├── client │ │ └── minio_client.go # MinIO 客户端初始化 │ ├── config │ │ └── config.go # 配置文件加载 │ ├── logger │ │ └── logger.go # 日志记录器 │ ├── metrics │ │ └── metrics.go # 指标收集 │ ├── uploader │ │ └── upload_minio.go # 文件上传到 MinIO │ └── watcher │ └── watcher.go # 文件系统监控 ├── logs │ └── app.log # 应用日志文件 ├── package │ └── package.sh # 打包脚本 ``` ## 功能简介 1. **文件系统监控**:监控指定目录的文件变化(创建、修改)。 2. **文件上传**:将变化的文件上传到 MinIO 对象存储。 3. **日志记录**:记录运行时的日志信息,包括文件变化事件和错误信息。 4. **指标收集**:收集和暴露应用运行时的指标数据。 ## 安装步骤 ### 先决条件 1. [Go 语言](https://golang.org/dl/) (版本 >= 1.16) 2. [MinIO](https://min.io/) 服务器 ### 克隆项目 ```bash git clone https://gitee.com/waylee2015/file-watcher.git cd file-watcher ``` ### 安装依赖 ```bash go mod download ``` ## 配置 在 `config/config.json` 中配置以下内容: ```json { "minio": { "endpoint": "localhost:9000", "accessKey": "minioadmin", "secretKey": "minioadmin", "secure": false, "bucketName": "monitor-test" }, "watchDirectories": [ "/data/test", "/opt/test" ], "tempFileSuffixes": [ "~", ".tmp" ], "uploadExistingFiles": true, "logFile": "logs/app.log", "logLevel": "INFO", "metricsPort": ":2112" } ``` ## 使用 ### 运行程序 ```bash go run cmd/main.go -config path/to/your/config.json ``` 如果没有指定 `-config` 参数,它会默认读取 `config/config.json` 文件。 ### 打包 使用 `package/package.sh` 脚本可以打包应用: ```bash sh package/package.sh ``` ## 日志 应用的日志会记录在 `logs/app.log` 文件中。 ## 指标监控 应用会在配置的端口(例如 `2112`)启动一个 HTTP 服务,用于暴露运行时的指标数据。可以通过 `http://localhost:2112/metrics` 访问这些指标。 ## 贡献 欢迎贡献代码!请提交 Pull Request 或报告问题。 ## 许可证 xxx ### 说明 - **项目简介**:简要描述项目的功能和用途。 - **目录结构**:详细列出项目的目录结构,帮助用户了解各个文件的作用。 - **功能简介**:概述项目的主要功能。 - **安装步骤**:指导用户如何安装和运行项目,包括先决条件和步骤。 - **配置**:提供一个示例配置文件,并解释配置项的含义。 - **使用**:说明如何运行项目,包括命令行参数的使用。 - **日志**:说明日志文件的位置。 - **指标监控**:解释如何访问应用的运行指标。 - **贡献**:说明如何贡献代码或报告问题。 - **许可证**:说明项目的开源许可证。