服务器代码备份实战:只用 GitHub 私有仓库(隐私脱敏版)

关键词:Linux 服务器、GitHub 私有仓库、代码备份、训练项目、避坑
说明:本文已对用户名、服务器名、真实目录等信息做脱敏处理,可直接公开发布。


1. 背景与问题

很多训练项目都会遇到同一个问题:

  • 代码本身体积很小
  • 训练产物(checkpoint、日志、数据集)体积巨大
  • 如果把整个项目目录直接备份到网盘,免费额度很快耗尽

我的项目结构中,最大头是:

  • workspace/output/(大量 checkpoint*.pth
  • workspace/data/
  • workspace/logs/

结论:“全量目录备份”不合理,应该“代码与大文件分离”


2. 最终方案(一句话)

只用 GitHub 私有仓库备份源码与配置,不上传训练大文件。

  • 主分支:main
  • 日常操作:add -> commit -> push
  • 通过 .gitignore 严格排除大文件目录与模型权重

3. 第一步:创建私有仓库

在 GitHub 新建仓库时:

  • 可见性选择 Private
  • 仓库可命名为:project-code-backup(示例)
  • 不强制初始化 README(已有本地项目可直接推送)

4. 第二步:配置 SSH(推荐)

先在服务器测试:

ssh -T git@github.com

如果返回“认证成功(但不提供 shell)”,说明 SSH 配置可用。

若未配置,流程如下:

  1. 生成密钥:ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 复制公钥:cat ~/.ssh/id_ed25519.pub
  3. GitHub → Settings → SSH and GPG keys → New SSH key
  4. 再次测试 ssh -T git@github.com

5. 第三步:先写好 .gitignore(核心)

示例(可直接用):

# 训练输出
workspace/output/

# 日志
workspace/logs/

# 数据集
workspace/data/

# 模型权重(兜底)
*.pt
*.pth
*.ckpt
*.onnx
*.safetensors

# Python 缓存
__pycache__/
*.pyc
*.pyo
*.pyd

# 编辑器
.vscode/
.idea/

# 临时文件
*.tmp
*.swp

这一步非常关键。
一旦把大文件提交进 Git 历史,后续清理会很麻烦。


6. 第四步:首次绑定并推送(模板命令)

cd /path/to/your/project

git config --global user.name "your_github_name"
git config --global user.email "your_email@example.com"

git branch -M main

git remote remove origin 2>/dev/null || true
git remote add origin git@github.com:<YOUR_GITHUB_USERNAME>/<YOUR_PRIVATE_REPO>.git

git add .
git commit -m "init: source backup"
git push -u origin main

若提示 nothing to commit,直接:

git push -u origin main

7. 日常备份工作流(极简)

每次开发结束执行:

cd /path/to/your/project
git status
git add .
git commit -m "daily update: xxx"
git push

如果不想复杂化流程,长期只用 main 就可以。


8. 常见问题

Q1:Permission denied (publickey)

SSH key 未配置好或未加载,重新 ssh-add 并测试 ssh -T

Q2:误提交了大文件目录怎么办?

先取消追踪再提交:

git rm -r --cached workspace/output workspace/data workspace/logs
git add .
git commit -m "remove large artifacts from tracking"
git push

Q3:为什么不直接备份整个项目?

因为训练产物体积太大、变化频繁,成本高且效率低。
代码与配置才是“可持续备份”的核心。


9. 实践建议(给未来的自己)

  1. 先保证“代码可追溯”,再考虑“大文件归档”
  2. 仓库保持干净:只放源码、配置、脚本、说明
  3. checkpoint 归档后续单独做(例如只保留 best/last

10. 总结

对于训练型项目,最稳妥的低成本备份路径是:

  • GitHub 私有仓库 = 代码主备份
  • 大权重/数据集 = 独立存储策略(后续再做)

这样既能立即落地,又不会被海量文件拖垮。


如果你也有类似场景,建议先从这套“源码优先备份”开始,再逐步升级到完整归档方案。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐