# auto_backup **Repository Path**: czleader/auto_backup ## Basic Information - **Project Name**: auto_backup - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-08 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目文件夹定期备份 将 `config/projects.list` 中列出的目录,增量备份到两个 NAS 路径。 采用 **rsync + 硬链接快照**:未变更文件不重复占磁盘,CPU 开销低,还原时直接复制对应快照目录即可。 ## 快速开始 ```bash cd ~/auto_backup ./install.sh # 安装 systemd 用户定时器(每天 03:00) ./scripts/run_backup.sh # 立即执行一次 ./scripts/list_backups.py # 查看备份状态 ``` ## 配置 | 文件 | 说明 | |------|------| | `config/projects.list` | 每行一个项目路径(支持 `~`) | | `config/backup.conf` | NAS 目标路径、保留策略、排除规则 | | `config/webdav.secret` | 坚果云 WebDAV 凭据(见 `webdav.secret.example`) | ### 保留策略(默认) - 最近 **7** 天的每日快照 - 最近 **4** 周的每周快照 - 最近 **3** 个月的每月快照 (同一规则下取并集,始终保留最新一份) ### NAS 目录结构 ``` /mnt/nas3_workspace/YangmingLiu/project_backups/ auto_skill/ latest -> snapshots/20260608-030012 snapshots/ 20260607-030005/ 20260608-030012/ auto_multskill/ ... ``` NAS 离线时:**只写日志、不报错退出**,不影响其他目标和其他项目。 ### WebDAV(坚果云) - 仅写入网盘下的 **`project_backups/`** 目录,不读取、不修改其他文件 - 本地先做 rsync 增量快照,**只上传变更文件**(节省上行流量) - 每月上行流量累计 **≥ 500 MB** 时警告并**停止 WebDAV 备份**(坚果云免费版月限约 1 GB) - 流量计数保存在 `.cache/webdav_traffic.json`,每月自动重置 ```bash cp config/webdav.secret.example config/webdav.secret # 填写账号与应用密码 chmod 600 config/webdav.secret ``` WebDAV 保留策略(默认):3 日 / 2 周 / 2 月(比 NAS 更保守以节省空间与流量)。 ## 还原某一版本 ```bash # 列出可用快照 ./scripts/restore.py auto_skill --list --destination nas3 # 还原最新版到指定目录 ./scripts/restore.py auto_skill --target ~/restored_auto_skill --destination nas3 # 还原指定快照 ./scripts/restore.py auto_skill --snapshot 20260607-030005 --target ~/restored --destination nas3 ``` `--destination` 可选 `nas3` / `nas4` / `webdav` / `auto`(自动选第一个有备份的目标)。 ```bash # 列出所有来源的快照 ./scripts/restore.py auto_skill --list # 从 WebDAV 还原 ./scripts/restore.py SkillOpt --target ~/restored --destination webdav ``` ## 常用命令 ```bash # 查看定时器 systemctl --user status project-backup.timer # 查看日志 tail -f ~/auto_backup/logs/backup.log # 手动触发 systemctl --user start project-backup.service # 卸载定时器 systemctl --user disable --now project-backup.timer ``` ## 设计说明 - **空间**:硬链接增量快照,仅新/改文件占额外空间;排除 `.git/objects`、`.venv`、`__pycache__` 等大目录。 - **算力**:rsync 单线程顺序同步,`Nice=10` 降低 IO/CPU 优先级。 - **还原**:每个快照是完整目录树,无需专用工具链。 - **CIFS/SMB NAS**:使用本地 `--temp-dir` 暂存文件(避免 NAS 上 mkstemp 失败),并关闭权限/时间戳同步。