bjtulug / bjtu-mirror-issues

Handle BJTU mirror issues.
7 stars 0 forks source link

希望能够建立AdoptOpenJDK各个版本的镜像 #9

Open robberphex opened 4 years ago

robberphex commented 4 years ago

请介绍新镜像

AdoptOpenJdk托管在GitHub release上,国内访问速度十分感人,并且因为链接重定向至S3,很难下载。

AlynxZhou commented 4 years ago

如果没有rsync的话,镜像站同步比较困难,因为没办法人力去一个个版本下载,无论是人力还是服务器资源还是程序都不太好实现,最好的还是直接有用来镜像的那种地址。

另外就是现在特殊时期,学校不允许提前返校,但是防火墙应该是限制只能校内ssh服务器,我不知道 @paulzhn 能不能处理……

robberphex commented 4 years ago

如果没有rsync的话,镜像站同步比较困难,因为没办法人力去一个个版本下载,无论是人力还是服务器资源还是程序都不太好实现,最好的还是直接有用来镜像的那种地址。

另外就是现在特殊时期,学校不允许提前返校,但是防火墙应该是限制只能校内ssh服务器,我不知道 @paulzhn 能不能处理……

只能运行rsync吗?写一个shell脚本请求github的api也可以下载的。

paulzhn commented 4 years ago

@AlynxZhou 应该问题不大,简单粗暴curl/wget其实就行...

AlynxZhou commented 4 years ago

不是说只能运行rsync,而是说其他镜像都是用rsync(除了pypi),这样方便用mirror工具统一管理,如果单独做一种处理就需要单独处理,而且肯定不是只同步一次,需要crontab或者timer,还有这种下载不好做增量更新,rsync则直接增量更新。

而且对于mirror这种大量流量的应用,rsync的性能比一个一个http下载好。我觉得要是官方提供统一的rsync,最好就使用rsync同步。

Robert LU notifications@github.com 于2020年3月4日周三 下午5:01写道:

如果没有rsync的话,镜像站同步比较困难,因为没办法人力去一个个版本下载,无论是人力还是服务器资源还是程序都不太好实现,最好的还是直接有用来镜像的那种地址。

另外就是现在特殊时期,学校不允许提前返校,但是防火墙应该是限制只能校内ssh服务器,我不知道 @paulzhn https://github.com/paulzhn 能不能处理……

只能运行rsync吗?写一个shell脚本请求github的api也可以下载的。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/paulzhn/bjtu-mirror-issues/issues/9?email_source=notifications&email_token=ACANVRZGU7I5OV2UTXE2EBLRFYKFVA5CNFSM4LA7PBJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENW5XEQ#issuecomment-594402194, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACANVR5ODMLE4IEQLIIWHLTRFYKFVANCNFSM4LA7PBJQ .

-- Alynx Zhou A Coder & Dreamer

Intern in SUSE Beijing *Student of *Beijing Jiaotong University School of Computer and Information Technology

AlynxZhou commented 4 years ago

@AlynxZhou 应该问题不大,简单粗暴curl/wget其实就行...

实现很好实现,但是你得考虑你后续维护,如果单独给这玩意搞一个很容易就忘了,不维护的话就没什么存在意义了又……你要考虑维护团队(大概)就你自己的情况

chestnutprog commented 4 years ago

@paulzhn @AlynxZhou 有没有镜像Github仓库的轮子啊,也许可以用GitHub api造一个出来 其实有个julia仓库的mirror(也是放在GitHub上)已经在搞了,但是镜像站访问GitHub的速度也还是十分感人,也许我的梯子弄好了之后能有足够的流量给镜像站折腾(

paulzhn commented 4 years ago

@AlynxZhou 现在其实两个人在搞 @chestnutprog 轮子指啥

AlynxZhou commented 4 years ago

@paulzhn @AlynxZhou 有没有镜像Github仓库的轮子啊,也许可以用GitHub api造一个出来

这你要问 mirror 的作者 @ideal 了,我不知道学长工作之余有没有时间搞一下这个……或者我们研究一下。

而且我觉得这种抓 github api 的行为不管是对我们的服务器还是 github 的服务器都不太友好,可能会有 timeout 等等的限制吧。实现起来应该挺难,不如先找找有没有rsync(

chestnutprog commented 4 years ago

@paulzhn @AlynxZhou 有没有镜像Github仓库的轮子啊,也许可以用GitHub api造一个出来

这你要问 mirror 的作者 @ideal 了,我不知道学长工作之余有没有时间搞一下这个……或者我们研究一下。

而且我觉得这种抓 github api 的行为不管是对我们的服务器还是 github 的服务器都不太友好,可能会有 timeout 等等的限制吧。实现起来应该挺难,不如先找找有没有rsync(

可以看一下https://github.com/sunoru/julia-mirror ,我试的时候就很容易吃GitHub的限流,而且感觉对断点的处理很迷,每次同步完都是一堆报错。现在也确定不了镜像的完整性,不太敢往出放

robberphex commented 4 years ago

github API一小时最多5000次请求(https://developer.github.com/v3/#rate-limiting)

其他的话,可能就是网络原因导致的下载失败了。

AlynxZhou commented 4 years ago

@paulzhn @AlynxZhou 有没有镜像Github仓库的轮子啊,也许可以用GitHub api造一个出来

这你要问 mirror 的作者 @ideal 了,我不知道学长工作之余有没有时间搞一下这个……或者我们研究一下。 而且我觉得这种抓 github api 的行为不管是对我们的服务器还是 github 的服务器都不太友好,可能会有 timeout 等等的限制吧。实现起来应该挺难,不如先找找有没有rsync(

可以看一下https://github.com/sunoru/julia-mirror ,我试的时候就很容易吃GitHub的限流,而且感觉对断点的处理很迷,每次同步完都是一堆报错。现在也确定不了镜像的完整性,不太敢往出放

我觉得有点影响力和规模的项目都应该搞自己的下载服务器,这样你好我好大家好……

paulzhn commented 4 years ago

@RobberPhex 谢谢建议,已经纳入待办事项了

robberphex commented 4 years ago

我仔细看了下,发现通过github的release是获取不到全部最新的安装包的。必须得通过adoptopenjdk的API来。我已经更新了获取方式。 抱歉之前提供了错误的信息。

robberphex commented 4 years ago

下载脚本:

# 参数为版本,比如8,11等
function downloadRelease() {
  TMP_DIR=$(mktemp -d)
  DIR="adoptopenjdk$i"
  curl -s "https://api.adoptopenjdk.net/v2/latestAssets/releases/openjdk$1" | \
   jq -r '.[]| [.binary_link, .binary_name]| @tsv' | \
   while IFS=$'\t' read -r link filename; do
     echo $filename $link
     curl -sL "$link" -o "$TMP_DIR/$filename"
   done
   mv "$DIR" "$DIR.toremove"
   mv "$TMP_DIR" "$DIR"
   rm -rf "$DIR.toremove"
}

for i in 8 11 13;
do
  downloadRelease $i
done