# file-catalog **Repository Path**: rogmail/file-catalog ## Basic Information - **Project Name**: file-catalog - **Description**: NAS多盘文件目录管理器 — 扫描、浏览、去重、跨盘对比,Docker一键部署 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-01 - **Last Updated**: 2026-05-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FileCatalog - NAS 文件目录管理器 多盘文件扫描、对比、去重工具,支持Docker部署到NAS。 ## 功能 - **目录扫描**: 采样哈希(头+中+尾各64KB)快速去重,支持定时自动扫描 - **文件浏览**: 按目录、按类型、按名称搜索,排序分页,在线预览图片/视频/音频 - **重复检测**: 三种模式(文件大小/采样MD5/完整MD5),分组展示重复文件 - **跨盘对比**: 选两个目录,找出相同文件和各自独有文件 - **文件管理**: 重命名、移动、导出CSV/JSON、回收站 - **媒体对比**: 图片滑块叠透/差异高亮,视频同步播放/逐帧对比 - **Web界面**: 深色主题,响应式布局,弹窗预览 ## 快速开始 ### 方式1: Docker Compose (推荐) 1. 编辑 `docker-compose.yml`,修改NAS挂载路径 2. 启动: ```bash docker compose up -d ``` 3. 访问 http://你的NAS-IP:5080 ### 方式2: 本地运行 ```bash pip install -r requirements.txt CATALOG_DB=./catalog.db THUMB_DIR=./thumbs TRASH_DIR=./trash python app.py ``` ## 使用流程 1. 打开「目录管理」页面 2. 点击「添加目录」,填入名称和路径(或使用「自动发现」) 3. 点击「扫描」按钮,等待完成 4. 到「文件浏览」查看所有文件,支持在线预览 5. 到「重复检测」查看重复文件,支持图片/视频对比 6. 到「跨盘对比」比较两个目录的差异 ## NAS SMB 挂载示例 在NAS宿主机上先挂载SMB共享: ```bash # 创建挂载点 sudo mkdir -p /mnt/nas_u /mnt/nas_x # 挂载 sudo mount -t cifs //NAS-IP/存储5 /mnt/nas_u -o username=xxx,password=xxx,vers=3.0,iocharset=utf8 sudo mount -t cifs //NAS-IP/存储2 /mnt/nas_x -o username=xxx,password=xxx,vers=3.0,iocharset=utf8 ``` 然后在 docker-compose.yml 中映射这些路径。 ## 目录结构 ``` file-catalog/ ├── app.py # Flask主应用 ├── models.py # 数据库模型(SQLite) ├── scanner.py # 多级文件扫描器 ├── requirements.txt ├── Dockerfile ├── docker-compose.yml ├── templates/ # Jinja2模板 │ ├── base.html │ ├── dashboard.html │ ├── drives.html │ ├── files.html │ ├── duplicates.html │ ├── compare.html │ ├── preview.html │ ├── preview_lite.html │ ├── compare_view.html │ ├── compare_view_lite.html │ └── trash.html └── data/ # 运行时数据(Docker挂载) ├── catalog.db # SQLite数据库(自动创建) ├── thumbs/ # 缩略图缓存 └── trash/ # 回收站 ```