# backup_git_repo **Repository Path**: incoparab/backup_git_repo ## Basic Information - **Project Name**: backup_git_repo - **Description**: 根据gitignore规则备份本地文件 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-03 - **Last Updated**: 2026-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Backup Git Repo 一个轻量级的目录备份工具,**无需 `.git` 仓库**,手动解析 `.gitignore` 规则来过滤文件,将保留的文件打包成 zip 压缩包。 ## 功能特性 - **纯 `.gitignore` 规则匹配** — 不依赖 git 命令,纯 Python 实现 - **多级 `.gitignore` 支持** — 子目录的 `.gitignore` 优先于父级,支持 `!` 否定模式 - **多线程过滤 & 打包** — 大批量文件时性能好 - **Dry-run 模式** — 先看看会备份哪些文件,确认后再执行 - **防覆盖** — zip 文件自动附加时间戳,不会覆盖已有备份 ## 使用方法 ```bash # 基本用法:备份指定目录 python backup_git_repo.py /path/to/dir # 指定输出目录 python backup_git_repo.py /path/to/dir --output-dir /path/to/output # 仅查看哪些文件会被备份(不生成 zip) python backup_git_repo.py /path/to/dir --dry-run # 自定义线程数(默认 8) python backup_git_repo.py /path/to/dir --workers 4 ``` ### 参数说明 | 参数 | 说明 | |------|------| | `repo_dir` | 要备份的目录路径 | | `--output-dir` | 输出目录(默认:`/backups`) | | `--dry-run` | 仅显示统计信息,不生成压缩包 | | `--batch-size` | 每批处理文件数(默认:50) | | `--workers` | 工作线程数(默认:8) | ## 工作原理 1. **扫描** — 遍历目标目录,收集所有普通文件(跳过隐藏文件和目录) 2. **解析 `.gitignore`** — 读取目录树中所有 `.gitignore` 文件,按层级缓存规则 3. **过滤** — 逐文件匹配 `.gitignore` 规则,保留未被忽略的文件 4. **打包** — 将保留文件写入 zip 压缩包 ## 示例 ```bash # 对当前目录做 dry-run 预览 python backup_git_repo.py . --dry-run # 实际备份 python backup_git_repo.py /home/user/projects/myapp # 输出:/home/user/projects/myapp/backups/myapp-20260703-153000.zip ```