首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >#WorkBuddy# 我用它把"项目自动快照备份"做成了定时任务——防误删、零成本、还能一键回滚

#WorkBuddy# 我用它把"项目自动快照备份"做成了定时任务——防误删、零成本、还能一键回滚

原创
作者头像
用户12789693
发布于 2026-10-07 15:44:51
发布于 2026-10-07 15:44:51
530
举报

做外贸和系统开发的都知道一个真理:资料在 D 盘、仓库在云,但手一抖 rm 或覆盖保存,几个月的活说没就没。我以前靠手动复制文件夹做备份,结果经常忘了、或者复制出一堆同名 副本(2) 反而更乱。

后来我把这件事全交给 WorkBuddy 了:让它写一份"滚动快照"脚本,再配一个每天自动跑的定时任务。半年下来,误删过两次、覆盖过一次,都靠快照 30 秒回滚,一分钱没花。下面把完整流程拆给你,脚本可直接抄。

一、让 WorkBuddy 生成快照脚本

我给 WorkBuddy 的指令是:"写一个 Python 脚本,把指定项目目录打成带时间戳的 zip,排除 .git/__pycache__/node_modules,只保留最近 7 份,其余自动删。" 它几秒就吐出了下面这段代码(backup_snapshot.py):

代码语言:txt
复制
import os, zipfile, glob, datetime

SRC = r"D:/nbtech-collab-engine/workbuddy/2026-09-17-23-53-28"  # 要备份的项目根
OUT = r"D:/nbtech-collab-engine/backups"                         # 快照存放处
KEEP = 7                                                         # 滚动保留份数

os.makedirs(OUT, exist_ok=True)
stamp = datetime.datetime.now().strftime("%Y%m%d_%H%M")
zip_name = os.path.join(OUT, f"snap_{stamp}.zip")
exclude = {'.git', '__pycache__', 'node_modules', '.workbuddy'}

with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as z:
    for root, dirs, files in os.walk(SRC):
        dirs[:] = [d for d in dirs if d not in exclude]
        for f in files:
            fp = os.path.join(root, f)
            z.write(fp, os.path.relpath(fp, SRC))

snaps = sorted(glob.glob(os.path.join(OUT, "snap_*.zip")))
for old in snaps[:-KEEP]:
    os.remove(old)

print(f"已生成 {zip_name},当前保留 {len(snaps[-KEEP:])} 份快照")

关键点:① exclude 把缓存和版本库目录踢掉,快照体积能小一个量级;② KEEP=7 是滚动窗口,永远只留最新 7 份,磁盘不会爆;③ 文件名带 时分,同一天多次备份也不会互相覆盖。

二、在 WorkBuddy 里配成定时任务

脚本写好后,用 WorkBuddy 的「自动化」功能包一层定时调度,让它每天自己跑。我让它创建的是每日 23:00 执行的循环任务,rrule 长这样:

FREQ=DAILY;BYHOUR=23;BYMINUTE=0

设置要点(这是踩过坑的):把任务 prompt 写成「运行 backup_snapshot.py 并回传最后一行输出」,状态设 ACTIVE。WorkBuddy 会在后台按时触发,全程不用人盯着。如果你更想要"每周一备份一次",把 rrule 换成 FREQ=WEEKLY;BYDAY=MO;BYHOUR=23;BYMINUTE=0 即可,语法完全通用。

三、本地怎么跑、怎么回滚

WorkBuddy 自带的 Python 路径直接能跑(Windows 免装环境):

C:\Users\qega1\.workbuddy\binaries\python\versions\3.13.12\python.exe D:/nbtech-collab-engine/backup_snapshot.py

回滚更简单:某次手滑把 config.json 改崩了,直接进 D:/nbtech-collab-engine/backups/,按时间挑一份 snap_*.zip 解压,把出问题的文件覆盖回去就行——解压即回滚,不需要任何数据库或还原工具。

四、两个进阶技巧

1. 加失败报警:在脚本末尾发一封邮件(SMTP)告知"今日快照完成 / 失败",配 WorkBuddy 的 Agent Mail 能力,出问题第一时间知道。

2. 多项目一份脚本:把 SRC 改成列表循环,一个任务备份整个工作区,比一个个目录配省事。

五、踩坑小结

- 别把 .workbuddy、.git 打进快照,否则一份备份比原项目还大;

- KEEP 别设太大,7~14 份足够,纯当"后悔药"不是"档案库";

- 定时任务首次创建后先手动跑一次确认路径正确,再交给它自动,免得跑了一个月全是空 zip。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档