V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SingeeKing
10.19D

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

  •  
  •   SingeeKing ·
    PRO
    ·
    ImSingee · 1 天前 · 1233 次点击

    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 告知

    12 条回复    2026-04-16 16:09:55 +08:00
    ixinshang
        1
    ixinshang  
       1 天前
    感觉不错呀。
    以前想着拿 gitea 来备份。 但是效果不怎么好
    TrackBack
        2
    TrackBack  
       1 天前
    看着不错,有空试试
    不过我记得 github 有个导出全部数据的按钮吧,有没有可能定时调用那个?
    a1210968738
        3
    a1210968738  
       18 小时 42 分钟前 via Android
    我记得 gogs 好像也有定时同步的功能
    Sliots
        4
    Sliots  
       18 小时 14 分钟前
    @ixinshang 可以用 Gitea Mirror
    loading
        5
    loading  
       17 小时 22 分钟前
    我群晖也在那个时候部署了类似功能,省事运行很久了。
    villivateur
        6
    villivateur  
       17 小时 14 分钟前
    我也一直用 Gitea 的 Mirror 功能,感觉那个功能更全一点
    bhqt
        7
    bhqt  
       13 小时 14 分钟前
    等着等着,目前是用 Forgejo 做镜像
    SingeeKing
        8
    SingeeKing  
    OP
    PRO
       12 小时 46 分钟前   ❤️ 1
    @ixinshang
    @villivateur
    @Sliots

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

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

    有一个专门的 Gitea Mirror 倒是解决了这种问题,但它是检测到异常变更而要求人工介入的,我觉得这种是个心智负担
    SingeeKing
        9
    SingeeKing  
    OP
    PRO
       12 小时 44 分钟前
    @TrackBack 理论上可以,但我不会用它来做 repo 的同步,每次要下载全量数据太恐怖了,而且也不支持 star 的 repo 的下载
    SingeeKing
        10
    SingeeKing  
    OP
    PRO
       12 小时 42 分钟前
    @bhqt 将数据 [导出] 到其它平台确实在计划中,但是最根本的数据我还是觉得存文件系统最保险,因为各种 git 平台都会有内置的 gc 功能,用它来做单一存储很不保险(可以参考我上面回复 gitea 的)
    SingeeKing
        11
    SingeeKing  
    OP
    PRO
       12 小时 42 分钟前
    @villivateur 你是觉得缺了什么功能呢? issue 之类的嘛
    villivateur
        12
    villivateur  
       11 小时 0 分钟前
    @SingeeKing issue, action, lfs, release 都能给你同步过来
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 19:10 · PVG 03:10 · LAX 12:10 · JFK 15:10
    ♥ Do have faith in what you're doing.