为什么前端项目需要自动备份?
前端开发中,我们经常依赖 node_modules、构建产物等易丢失的文件,而代码仓库可能只存在于本地或某个临时分支。一旦硬盘故障或误删,损失惨重。手动备份又容易忘记。本教程将利用 Git 钩子 和 cron(或 Windows 任务计划程序)实现每日自动提交到私有仓库,确保代码安全。
环境准备
- 一台常开的开发机或服务器(Linux/macOS/Windows 均可)
- Git 已安装并配置好 SSH 密钥(用于推送)
- 一个空的私有远程仓库(如 GitHub、GitLab 或 Gitea)
分步实现
1. 初始化 Git 仓库并配置远程
cd /path/to/your/project
git init
git remote add origin git@github.com:yourname/project-backup.git
2. 创建备份脚本
在项目根目录创建 backup.sh(Linux/macOS)或 backup.bat(Windows),内容如下:
#!/bin/bash
# backup.sh
git add .
git commit -m "自动备份 $(date +'%Y-%m-%d %H:%M:%S')"
git push origin master --force
注意:--force 用于覆盖远程历史,避免冲突。如果远程有历史,建议先拉取合并。
3. 设置 Git 钩子
在 .git/hooks/ 目录下创建 post-commit 文件(无扩展名),并赋予执行权限:
#!/bin/bash
# post-commit 钩子:提交后自动推送
bash /path/to/project/backup.sh
赋予权限:
chmod +x .git/hooks/post-commit
这样每次 git commit 后都会自动执行备份脚本。但我们希望每日自动提交,所以还需要定时任务。
4. 配置定时任务
Linux/macOS:编辑 crontab
crontab -e
# 每天凌晨 2 点执行
tar -czf /tmp/backup-$(date +%Y%m%d).tar.gz /path/to/project
git -C /path/to/project pull origin master
git -C /path/to/project commit --allow-empty -m "每日定时备份"
git -C /path/to/project push origin master
Windows :使用任务计划程序,设置每天触发运行 backup.bat 即可。
5. 排除不需要备份的文件
在 .gitignore 中添加 node_modules、dist 等,避免备份体积过大。示例:
node_modules/
dist/
*.log
验证效果
- 手动执行一次
git commit --allow-empty -m "test",查看.git/hooks/post-commit是否触发推送。 - 检查远程仓库是否出现新提交,且内容与本地一致。
- 修改一个文件,然后等待定时任务执行,再次检查远程仓库是否更新。
如果推送失败,检查 SSH 密钥是否添加,或改用 HTTPS 并配置凭据存储。
总结
通过 Git 钩子与定时任务,我们实现了前端项目的自动备份。这个方案简单、跨平台,且不依赖第三方服务。你可以根据需要调整备份频率或增加加密压缩。现在,即使开发机崩溃,你的代码也能从远程仓库恢复。