做外贸和系统开发的都知道一个真理:资料在 D 盘、仓库在云,但手一抖 rm 或覆盖保存,几个月的活说没就没。我以前靠手动复制文件夹做备份,结果经常忘了、或者复制出一堆同名 副本(2) 反而更乱。
后来我把这件事全交给 WorkBuddy 了:让它写一份"滚动快照"脚本,再配一个每天自动跑的定时任务。半年下来,误删过两次、覆盖过一次,都靠快照 30 秒回滚,一分钱没花。下面把完整流程拆给你,脚本可直接抄。
一、让 WorkBuddy 生成快照脚本
我给 WorkBuddy 的指令是:"写一个 Python 脚本,把指定项目目录打成带时间戳的 zip,排除 .git/__pycache__/node_modules,只保留最近 7 份,其余自动删。" 它几秒就吐出了下面这段代码(backup_snapshot.py):
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 删除。