终于把一直想做的 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 告知 感觉不错呀。
以前想着拿 gitea 来备份。 但是效果不怎么好 看着不错,有空试试
不过我记得 github 有个导出全部数据的按钮吧,有没有可能定时调用那个? 我记得 gogs 好像也有定时同步的功能 @ixinshang 可以用 Gitea Mirror 我群晖也在那个时候部署了类似功能,省事运行很久了。 我也一直用 Gitea 的 Mirror 功能,感觉那个功能更全一点 等着等着,目前是用 Forgejo 做镜像 @ixinshang
@villivateur
@Sliots
我自己之前其实也自建过 gitea ,但是它还是没做到我想的「记录所有的变更历史」
我遇到过几次,某个项目转闭源了,然后 force push 只留了个 README ,然后等我发现的时候 gitea 后台的 gc 也把历史的 git blob 清理了
有一个专门的 Gitea Mirror 倒是解决了这种问题,但它是检测到异常变更而要求人工介入的,我觉得这种是个心智负担 @TrackBack 理论上可以,但我不会用它来做 repo 的同步,每次要下载全量数据太恐怖了,而且也不支持 star 的 repo 的下载
页:
[1]
2