Что: 6e86425441b195a915048fc71a4a50898e73a54e Когда: 2023-06-13 11:08:46+03:00 ------------------------------------------------------------------------ Темы: git tip ------------------------------------------------------------------------ Зеркалирование AUR зеркала https://github.com/archlinux/aur Есть Git-репозиторий со всеми AUR пакетами. Каждый находится в своей ветке, а это почти 115k штук. Просто так сделать git clone не выходит из-за этого. Но можно доставать все эти данные частями, просто получив список веток, а дальше по тысяче (например) штук их запрашивать: git ls-remote https://github.com/archlinux/aur.git | cut -f2 | sed -n "s/^refs.heads.//p" | xargs -L1000 | while read pkgs ; do for pkg in $pkgs ; do echo ${pkg}:${pkg} ; done | git fetch --stdin origin done А ещё стоит сделать "git config gc.auto 0", так как Git упорно запускает gc при всём этом, сильно тормозя весь процесс. gc можно вызвать руками потом. ------------------------------------------------------------------------ оставить комментарий: mailto:comment@blog.stargrave.org?subject=Re:%20%D0%97%D0%B5%D1%80%D0%BA%D0%B0%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20AUR%20%D0%B7%D0%B5%D1%80%D0%BA%D0%B0%D0%BB%D0%B0%20%286e86425441b195a915048fc71a4a50898e73a54e%29 ------------------------------------------------------------------------ комментарий 0: From: kmeaw Date: 2023-06-15 22:48:38Z А почему не делалось зеркалирование из первоисточника в исходном формате? Кажется, тогда не было бы проблемы с выкачиваниеем огромного репозитория, а скачивание по частям получилось бы естественным образом. Примерно так (сам не провеерял, пишу по памяти): curl https://aur.archlinux.org/packages.gz | zcat | xargs -I{} -P10 git clone https://aur.archlinux.org/{}.git А ещё у aur.archlinux.org есть IPv6 (в отличие от github.com). ------------------------------------------------------------------------ комментарий 1: From: Sergey Matveev Date: 2023-06-15 23:19:47Z *** kmeaw [2023-06-15 23:45]: >А почему не делалось зеркалирование из первоисточника в исходном формате? >curl https://aur.archlinux.org/packages.gz | zcat | Потому что я нисколько не пользователь Arch-а и не в курсе как там у них чего устроено и совершенно не хочется разбираться (не интересен этот дистрибутив). Но знания о пакетах, где они (URL) и контрольные суммы могут рано или поздно где-нибудь да пригодится, а также возможно какие-то патчи. Зеркало AUR я просто мельком где-то увидел и решил вот склонировать. Но да, предложенный вариант явно получше, спасибо! ------------------------------------------------------------------------ комментарий 2: From: Sergey Matveev Date: 2023-06-16 08:21:11Z *** kmeaw [2023-06-15 23:45]: >А почему не делалось зеркалирование из первоисточника в исходном формате? Первоисточник через несколько десятков запросов выдаёт 429 HTTP код. Вставил sleep 1 между git запросами -- тоже быстро отлупливает меня. И это происходит не только на clone, но и на fetch. ------------------------------------------------------------------------ комментарий 3: From: kmeaw Date: 2023-06-17 08:23:35Z Фрагмент из /etc/nginx/nginx.d/aurweb.conf: # limit Git requests to block Git DoS attempts. # # grep aurwebgitlimit /var/log/nginx/aur.archlinux.org/error.log | awk '{ print $14 }' | sort | uniq | sort limit_req_zone $binary_remote_addr zone=aurwebgitlimit:10m rate=30r/m; limit_req_status 429; server { … location ~ "^/([a-z0-9][a-z0-9.+_-]*?)(\.git)?/(git-(receive|upload)-pack|HEAD|info/refs|objects/(info/(http-)?alternates|packs)|[0-9a-f]{2}/[0-9a-f]{38}|pack/pack-[0-9a-f]{40}\.(pack|idx))$" { limit_req zone=aurwebgitlimit burst=300 nodelay; … uwsgi_pass smartgit; … } } Похоже, что git fetch делает много запросов, даже если с другой стороны отвечают по smart protocol. Если история не нужна, могу предложить ещё забирать snapshot, для них (location ~ ^/cgit) настроен limit_req zone=aurwebgitlimit burst=900 nodelay: https://aur.archlinux.org/cgit/aur.git/snapshot/clickhouse.tar.gz Или можно попробовать скачать по SSH (что, правда, потребует регистрации для загрузки публичного ключа): git clone aur@aur.archlinux.org:clickhouse ------------------------------------------------------------------------ комментарий 4: From: Sergey Matveev Date: 2023-06-17 08:45:21Z *** kmeaw [2023-06-17 09:20]: >Похоже, что git fetch делает много запросов А я ведь его даже через tofuproxy пускал, чтобы тут keep-alive TLS соединение удерживал. Правда это усугублялось запуском под parallel, который восемь процессов плодил. >[...]могу предложить[...] Спасибо большое! Но мне это прям вообще не горит, не критично всё и это скорее просто проходя мимо я решил сделать копию на всякий пожарный, авось пригодится. ------------------------------------------------------------------------ Сгенерирован: SGBlog 0.34.0