https://github.com/ImSingee/git-plus
单一二进制直接运行,或是也打了一个 docker 镜像可用;建议运行在 NAS
从当年 GitHub 封了俄罗斯以后就一直想有这么个备份工具吧,之前靠一堆 bash 脚本完成的,现在算是借 AI 的手用 Go 重写了又做了个 Web 页面
1. 支持备份自己的 Repo 、Star 的 Repo 和 Watch 的 Repo
算是做了两方面的考量,一是自己写的代码存档下(防止被封号),二是自己收藏/关注的存档下(防止删库等)
2. 记录所有的变更历史
可能是自己误操作,也可能是收藏的 repo 出了什么变故;有的时候库可能还在,但 branch 被覆盖了
现有的工具遇到这种情况大都没做特殊处理,需要靠自己跑 reflog 或是按时间去找 commit
我的设计是,完整记录所有分支头的 commit 变化 —— 随意回滚
3. 定时同步
可选的定时同步,可以每天固定跑一次
期货功能
其实还有一些功能在计划中,比如索引所有的仓库来搜索、仓库有更新发通知(参考 ReleaseBot),也包括支持更多源(如 Gitlab )等,感兴趣的话也可以直接回复这个帖子,等发布了我 at 告知
1
ixinshang 1 天前
感觉不错呀。
以前想着拿 gitea 来备份。 但是效果不怎么好 |
2
TrackBack 1 天前
看着不错,有空试试
不过我记得 github 有个导出全部数据的按钮吧,有没有可能定时调用那个? |
3
a1210968738 18 小时 42 分钟前 via Android
我记得 gogs 好像也有定时同步的功能
|
5
loading 17 小时 22 分钟前
我群晖也在那个时候部署了类似功能,省事运行很久了。
|
6
villivateur 17 小时 14 分钟前
我也一直用 Gitea 的 Mirror 功能,感觉那个功能更全一点
|
7
bhqt 13 小时 14 分钟前
等着等着,目前是用 Forgejo 做镜像
|
8
SingeeKing OP PRO @ixinshang
@villivateur @Sliots 我自己之前其实也自建过 gitea ,但是它还是没做到我想的「记录所有的变更历史」 我遇到过几次,某个项目转闭源了,然后 force push 只留了个 README ,然后等我发现的时候 gitea 后台的 gc 也把历史的 git blob 清理了 有一个专门的 Gitea Mirror 倒是解决了这种问题,但它是检测到异常变更而要求人工介入的,我觉得这种是个心智负担 |
9
SingeeKing OP PRO @TrackBack 理论上可以,但我不会用它来做 repo 的同步,每次要下载全量数据太恐怖了,而且也不支持 star 的 repo 的下载
|
10
SingeeKing OP PRO @bhqt 将数据 [导出] 到其它平台确实在计划中,但是最根本的数据我还是觉得存文件系统最保险,因为各种 git 平台都会有内置的 gc 功能,用它来做单一存储很不保险(可以参考我上面回复 gitea 的)
|
11
SingeeKing OP PRO @villivateur 你是觉得缺了什么功能呢? issue 之类的嘛
|
12
villivateur 11 小时 0 分钟前
@SingeeKing issue, action, lfs, release 都能给你同步过来
|