使用 GitHub Actions 每天自动将 GitHub 仓库备份到 Gitea 或 GitLab。
- 🔧 支持 Gitea 和 GitLab 双平台备份
- ⏰ 每天凌晨 2 点自动执行
- 🚀 支持手动触发备份
- 📦 使用 ghorg 高效克隆所有仓库
- 🔒 支持公开和私有仓库备份
- (可选)自定义 GitHub 访问令牌(需要有repo权限)
如果不设置,脚本将使用 GitHub Actions 默认的 GITHUB_TOKEN。但是经过测试,默认令牌获取到的仓库数量有限(40个),建议创建一个新的个人访问令牌。
- Gitea 服务器地址
- Gitea 访问令牌(需要有repo、user权限)
- 目标组织或用户名
- GitLab 服务器地址
- GitLab 访问令牌(需要有创建项目、读写权限)
- 目标群组或用户名
在 GitHub 仓库设置中,添加以下 Secrets:
BACKUP_GITEA:true或falseBACKUP_GITLAB:true或falseVISIBILITY:public或private
CUSTOM_GITHUB_TOKEN: GitHub 访问令牌(需要有repo权限)(可选)
GITEA_HOST: Gitea 服务器主机名,如git.example.comGITEA_TOKEN: Gitea 访问令牌GITEA_OWNER: 目标组织或用户名
GITLAB_HOST: GitLab 服务器主机名,如gitlab.comGITLAB_TOKEN: GitLab 访问令牌GITLAB_OWNER: 目标群组或用户名
在 GitHub Actions 页面,手动触发工作流以确保配置正确。
backup-to-gitea.sh- 备份到 Gitea 的脚本backup-to-gitlab.sh- 备份到 GitLab 的脚本.github/workflows/backup.yml- GitHub Actions 工作流配置
编辑 .github/workflows/backup.yml 中的 cron 表达式:
schedule:
- cron: '0 2 * * *' # 每天凌晨 2 点设置 GitHub Secrets:BACKUP_GITEA=true
设置 GitHub Secrets:BACKUP_GITLAB=true
- Gitea/GitLab 用户需要有足够的权限创建仓库
- 运行可能需要较长时间,取决于仓库数量
- 建议先在测试环境验证配置正确性
- 备份过程会强制推送所有分支和标签