查看: 14|回复: 14

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

[复制链接]

3

主题

18

回帖

45

积分

新手上路

积分
45
发表于 2026-4-15 23:43:15 | 显示全部楼层 |阅读模式
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 告知
回复

使用道具 举报

0

主题

1

回帖

2

积分

新手上路

积分
2
发表于 2026-4-16 00:08:09 | 显示全部楼层
感觉不错呀。
以前想着拿 gitea 来备份。 但是效果不怎么好
回复

使用道具 举报

0

主题

5

回帖

10

积分

新手上路

积分
10
发表于 2026-4-16 01:08:30 | 显示全部楼层
看着不错,有空试试
不过我记得 github 有个导出全部数据的按钮吧,有没有可能定时调用那个?
回复

使用道具 举报

0

主题

2

回帖

4

积分

新手上路

积分
4
发表于 2026-4-16 08:28:38 | 显示全部楼层
我记得 gogs 好像也有定时同步的功能
回复

使用道具 举报

0

主题

1

回帖

2

积分

新手上路

积分
2
发表于 2026-4-16 08:56:25 | 显示全部楼层
@ixinshang 可以用 Gitea Mirror
回复

使用道具 举报

3

主题

238

回帖

485

积分

中级会员

积分
485
发表于 2026-4-16 09:48:29 | 显示全部楼层
我群晖也在那个时候部署了类似功能,省事运行很久了。
回复

使用道具 举报

2

主题

35

回帖

76

积分

注册会员

积分
76
发表于 2026-4-16 09:56:28 | 显示全部楼层
我也一直用 Gitea 的 Mirror 功能,感觉那个功能更全一点
回复

使用道具 举报

0

主题

1

回帖

2

积分

新手上路

积分
2
发表于 2026-4-16 13:56:30 | 显示全部楼层
等着等着,目前是用 Forgejo 做镜像
回复

使用道具 举报

3

主题

18

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2026-4-16 14:24:39 | 显示全部楼层
@ixinshang
@villivateur
@Sliots

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

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

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

使用道具 举报

3

主题

18

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2026-4-16 14:26:18 | 显示全部楼层
@TrackBack 理论上可以,但我不会用它来做 repo 的同步,每次要下载全量数据太恐怖了,而且也不支持 star 的 repo 的下载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
返回顶部