Скрипт для бекапа репозиториев с github

В связи с тем, что Github заблокировал некоторые аккаунты российских компаний, я решил перестраховаться и расширить свой скрипт бекапов небольшим скриптом, который выкачивает все репозитории из моего пользователя и доступных мне организаций.

Сам скрипт доступен в моем репозитории. Но, на всякий случай, заливаю его сюда отдельным файлом (если мой github когда-то заблокируют). С github последнюю версию скрипта можно скачать по прямой ссылке.

Перед запуском скрипта необходимо создать OAuth токен (инструкция здесь). Скрипт клонирует репозитории через SSH и, следовательно, нужно добавить SSH ключ в ваш аккаунт на Github (инструкция здесь)

После получения токена запукаем скрипт командой:

GITHUB_AUTH_TOKEN=<ваш-токен> bash backup.sh

для скачивания всех своих пользовательских репозиториев. А для скачивания всех репозиториев вашей организации следующую команду:

GITHUB_AUTH_TOKEN=<ваш-токен> bash backup.sh org <имя-организации>

В конечном итоге скрипт создаст .tgz архив со всеми репозиториями.

Восстановление из бекапа

Для восстановления из резервной копии проделываем следующие действия

# распаковка архива во временную директорию
tar -C /tmp -xf github_USER_20220415.tgz

# клонируем репозиторий нужного проекта из архива
git clone /tmp/project.git

# переходим в папку проекта
cd project

# меняем адрес git репозитория
git remote set-url origin https://new-remote.com/project.git

# отправляем код в удаленный репозиторий
git push origin master --tags

На этом все. Чтобы оставаться на связи, подписывайтесь на мой telegram - @gmoreva