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

2023-11-04 04:17:59 +08:00
 LeslieLeung

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 支持多种存储类型。

2408 次点击
所在节点    分享创造
16 条回复
xoxo419
2023-11-04 05:56:16 +08:00
正好有这样的需求~😁
sorcerer
2023-11-04 06:37:58 +08:00
看了下,要手动填写仓库地址么,建议改成填写 token,否则我有 1k star,一个一个填也太累了.
loading
2023-11-04 08:13:25 +08:00
我群晖每天把我自己的 repo 都看一下要不要备份,可别光看着别人的。
lisxour
2023-11-04 08:58:23 +08:00
有专门这样的网站哦,https://archive.softwareheritage.org/
zhouyg
2023-11-04 10:20:44 +08:00
近期有哪些仓库又没了?
LeslieLeung
2023-11-04 10:46:20 +08:00
@sorcerer #2 可以的,但是这 1k 个 repo 可能备份频率不能很高不然存储扛不住/一个小时备份不完全部。不过也可以加黑白名单或者做到增量,这个我看下。
LeslieLeung
2023-11-04 10:47:31 +08:00
@loading #3 收到🫡
LeslieLeung
2023-11-04 10:51:10 +08:00
@lisxour #4 是,包括但不限于 sourcegraph ,gharchive 这些在线的网站都或多或少能实现类似的需求。我这边有两个需求这些满足不了:
1. 备份一些私有的 git ,需要鉴权的
2. 仓鼠症,希望数据落在自己管辖的地方
lockheart
2023-11-04 12:33:47 +08:00
能连 release 一块备份吗?
dianso
2023-11-04 17:41:15 +08:00
fork 的人那么多,随便找个下载
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
2023-11-04 23:52:52 +08:00
我用的是 gitea ,可以镜像远程仓库,定期自动同步代码
Rashida
2023-11-05 05:51:39 +08:00
@loading #3 群晖怎么定期备份自己和别人的 git 仓库呢
loading
2023-11-05 08:00:29 +08:00
@Rashida #13 脚本很多,可以自己找找。我的是+系列,跑的 docker 。
xlinux
244 天前
@cdlnls 如果上游 git -f 推送了一个空仓库,貌似 gitea 这边同步之后,也变成空了,这种咋整啊?
LeslieLeung
244 天前
@xlinux 所以还是最好定时快照,无惧上游删库。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/988488

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX