Резервное копирование репозиториев с github, gitlab

от автора

main

Резервное копирование репозиториев с git серверов по токену. Для серверов на основе github и gitlab. Скрипт скачивает все Ваши репозитории доступные по токену и архивирует их. Давно хотел написать такой инструмент т.к. использую и те и те сервера в работе и личных целях.

Как пользоваться

Написано на python3 версии не ниже 3.7, скачиваем с github, устанавливаем зависимости и запускаем:

git clone https://github.com/dvjdjvu/gitReposDownloader cd gitReposDownloader  curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ && sudo apt update \ && sudo apt install gh libomp-dev -y  pip3 install -r requirements.txt

Скачиваем все доступные репозитории:

./src/main.py -s github.com -t ghp_TOKEN

Для работы с gitlab используется модуль python-gitlab. Взаимодействие с github идет через утилиту gh, которая запомнит токен. Удалить токен из памяти gh:

gh auth logout

В директории запуска скрипта создается архив имя_сервера.tar.gz или скрипт выводит ошибку причины не скачивания репозиториев.

Скачивание распараллелено в multiprocessing.cpu_count() потоков.

Спасибо за внимание.

Ссылки


ссылка на оригинал статьи https://habr.com/ru/post/709298/