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

我写了一个小工具,定期归档感兴趣的 Git 仓库,预防 404

  •  2
     
  •   LeslieLeung · 2023-11-04 04:17:59 +08:00 · 2445 次点击
    这是一个创建于 414 天前的主题,其中的信息可能已经有所发展或是发生改变。

    REpository ArchivER ( REAPER )是一个用于从任何 Git 服务器归档 Git 仓库的工具。

    近期有较多重要的 Git 仓库因为不可抗力原因不能访问了,事后再去找备份太麻烦,希望找个空闲的 vps 定期给关注的仓库备份,把整个仓库 clone 下来,及早防范。于是花了一晚肝了这个工具,期间还遇到了 GitHub 事故

    项目地址:LeslieLeung/reaper

    哎,希望事件早日平息,这些作者也安然无恙尽快回归。

    安装

    go install github.com/leslieleung/reaper@latest
    

    或从 Release 获取。

    使用方法

    你需要创建一个配置文件来使用 REAPER 。

    repository:
      - name: reaper
        url: github.com/leslieleung/reaper
        storage:
          - localFile
    
    storage:
      - name: localFile
        type: file
        path: /tmp/reaper
    

    然后,你可以使用配置文件运行 REAPER 。

    reaper -c config.yaml
    # 或者如果你的配置文件名为 config.yaml ,只需调用 reaper
    reaper
    

    rip

    rip命令会归档在配置中定义的单个 Git 仓库。

    reaper rip reaper
    

    run

    run命令会归档在配置中定义的所有 Git 仓库。

    reaper run
    

    结合 cron ,你可以定期归档 Git 仓库。

    配置

    有关配置,你可以查看此示例

    存储

    REAPER 支持多种存储类型。

    • 文件
    • AWS S3
    第 1 条附言  ·  2023-11-08 15:19:11 +08:00

    已经新增了使用S3作为存储和Docker运行,欢迎大家试用。

    16 条回复    2024-03-21 15:56:27 +08:00
    xoxo419
        1
    xoxo419  
       2023-11-04 05:56:16 +08:00
    正好有这样的需求~😁
    sorcerer
        2
    sorcerer  
       2023-11-04 06:37:58 +08:00 via Android
    看了下,要手动填写仓库地址么,建议改成填写 token,否则我有 1k star,一个一个填也太累了.
    loading
        3
    loading  
       2023-11-04 08:13:25 +08:00
    我群晖每天把我自己的 repo 都看一下要不要备份,可别光看着别人的。
    lisxour
        4
    lisxour  
       2023-11-04 08:58:23 +08:00   ❤️ 3
    有专门这样的网站哦,https://archive.softwareheritage.org/
    zhouyg
        5
    zhouyg  
       2023-11-04 10:20:44 +08:00
    近期有哪些仓库又没了?
    LeslieLeung
        6
    LeslieLeung  
    OP
       2023-11-04 10:46:20 +08:00 via iPhone
    @sorcerer #2 可以的,但是这 1k 个 repo 可能备份频率不能很高不然存储扛不住/一个小时备份不完全部。不过也可以加黑白名单或者做到增量,这个我看下。
    LeslieLeung
        7
    LeslieLeung  
    OP
       2023-11-04 10:47:31 +08:00 via iPhone
    @loading #3 收到🫡
    LeslieLeung
        8
    LeslieLeung  
    OP
       2023-11-04 10:51:10 +08:00 via iPhone
    @lisxour #4 是,包括但不限于 sourcegraph ,gharchive 这些在线的网站都或多或少能实现类似的需求。我这边有两个需求这些满足不了:
    1. 备份一些私有的 git ,需要鉴权的
    2. 仓鼠症,希望数据落在自己管辖的地方
    lockheart
        9
    lockheart  
       2023-11-04 12:33:47 +08:00 via iPhone
    能连 release 一块备份吗?
    dianso
        10
    dianso  
       2023-11-04 17:41:15 +08:00
    fork 的人那么多,随便找个下载
    kebamt
        11
    kebamt  
       2023-11-04 20:47:50 +08:00
    [mgedmin/ghcloneall: Script to clone/update all user/organization repos from GitHub]( https://github.com/mgedmin/ghcloneall)
    [gabrie30/ghorg: Quickly clone an entire org/users repositories into one directory - Supports GitHub, GitLab, Bitbucket, and more 🥚]( https://github.com/gabrie30/ghorg)

    这两个也不错,很完善了
    cdlnls
        12
    cdlnls  
       2023-11-04 23:52:52 +08:00
    我用的是 gitea ,可以镜像远程仓库,定期自动同步代码
    Rashida
        13
    Rashida  
       2023-11-05 05:51:39 +08:00 via iPhone
    @loading #3 群晖怎么定期备份自己和别人的 git 仓库呢
    loading
        14
    loading  
       2023-11-05 08:00:29 +08:00
    @Rashida #13 脚本很多,可以自己找找。我的是+系列,跑的 docker 。
    xlinux
        15
    xlinux  
       276 天前
    @cdlnls 如果上游 git -f 推送了一个空仓库,貌似 gitea 这边同步之后,也变成空了,这种咋整啊?
    LeslieLeung
        16
    LeslieLeung  
    OP
       276 天前   ❤️ 1
    @xlinux 所以还是最好定时快照,无惧上游删库。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2909 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:56 · PVG 21:56 · LAX 05:56 · JFK 08:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.