SingeeKing 发表于 2026-4-15 23:43:15

终于把一直想做的 GitHub 备份程序做出来了

https://github.com/ImSingee/git-plus

单一二进制直接运行,或是也打了一个 docker 镜像可用;建议运行在 NAS

从当年 GitHub 封了俄罗斯以后就一直想有这么个备份工具吧,之前靠一堆 bash 脚本完成的,现在算是借 AI 的手用 Go 重写了又做了个 Web 页面

https://i.imgur.com/j8ojEN5.jpeg

1. 支持备份自己的 Repo 、Star 的 Repo 和 Watch 的 Repo

算是做了两方面的考量,一是自己写的代码存档下(防止被封号),二是自己收藏/关注的存档下(防止删库等)

https://i.imgur.com/xOuTLju.jpeg

2. 记录所有的变更历史

可能是自己误操作,也可能是收藏的 repo 出了什么变故;有的时候库可能还在,但 branch 被覆盖了

现有的工具遇到这种情况大都没做特殊处理,需要靠自己跑 reflog 或是按时间去找 commit

我的设计是,完整记录所有分支头的 commit 变化 —— 随意回滚

https://i.imgur.com/AlRVqFw.jpeg

3. 定时同步

可选的定时同步,可以每天固定跑一次

https://i.imgur.com/2Wie5Jb.png

期货功能

其实还有一些功能在计划中,比如索引所有的仓库来搜索、仓库有更新发通知(参考 ReleaseBot),也包括支持更多源(如 Gitlab )等,感兴趣的话也可以直接回复这个帖子,等发布了我 at 告知

ixinshang 发表于 2026-4-16 00:08:09

感觉不错呀。
以前想着拿 gitea 来备份。 但是效果不怎么好

TrackBack 发表于 2026-4-16 01:08:30

看着不错,有空试试
不过我记得 github 有个导出全部数据的按钮吧,有没有可能定时调用那个?

a1210968738 发表于 2026-4-16 08:28:38

我记得 gogs 好像也有定时同步的功能

Sliots 发表于 2026-4-16 08:56:25

@ixinshang 可以用 Gitea Mirror

loading 发表于 2026-4-16 09:48:29

我群晖也在那个时候部署了类似功能,省事运行很久了。

villivateur 发表于 2026-4-16 09:56:28

我也一直用 Gitea 的 Mirror 功能,感觉那个功能更全一点

bhqt 发表于 2026-4-16 13:56:30

等着等着,目前是用 Forgejo 做镜像

SingeeKing 发表于 2026-4-16 14:24:39

@ixinshang
@villivateur
@Sliots

我自己之前其实也自建过 gitea ,但是它还是没做到我想的「记录所有的变更历史」

我遇到过几次,某个项目转闭源了,然后 force push 只留了个 README ,然后等我发现的时候 gitea 后台的 gc 也把历史的 git blob 清理了

有一个专门的 Gitea Mirror 倒是解决了这种问题,但它是检测到异常变更而要求人工介入的,我觉得这种是个心智负担

SingeeKing 发表于 2026-4-16 14:26:18

@TrackBack 理论上可以,但我不会用它来做 repo 的同步,每次要下载全量数据太恐怖了,而且也不支持 star 的 repo 的下载
页: [1] 2
查看完整版本: 终于把一直想做的 GitHub 备份程序做出来了