Бэкап всех своих репозиториев с GitHub | Zhbert’s Home
Zhbert's Home
Домашняя страничка Zhbert'а

Бэкап всех своих репозиториев с GitHub

СТАТЬИ / АДМИНИСТРИРОВАНИЕ / БЭКАП ВСЕХ СВОИХ РЕПОЗИТОРИЕВ С GITHUB


Паранойя не дремлет, поэтому всегда лучше иметь бэкап всех своих проектов, чтобы в случае какого-либо казуса ничего не потерялось. А лучше два бэкапа….

В качестве одного у меня есть свой сервер Gitea, на котором хранятся разные проекты или просто скрипты и заметки, он же выкачивает с GitHub в режиме зеркала те проекты, которые изначально хостятся там.

В качестве второго бэкапа рулят обычные архивы с данными где-нибудь на полочке.

Как выкачать все репозитории со своего аккаунта GitHub?

Для этого можно воспользоваться простым скриптом, который по API дернет список всех реп, а потом просто клонирует их в каталог.

Я его подцепил на каком-то форуме, и с тех пор довольно часто пользуюсь.

Создаем каталог, куда будем клонировать, и переходим в него:

mkdir my_projects
cd my_projects

А теперь запускаем скрипт:

curl -s "https://api.github.com/users//repos?per_page=100&page=1" | jq -r '.[] | select(.name ) | select(.fork == false).ssh_url' | xargs -L1 git clone

Единственный нюанс — он не сможет выкачать боле 100 реп, но я редко у кого столько видел.

Обновить репы можно так:

find . -maxdepth 1 -type d -exec sh -c '(cd {} && echo ">>> Pull repo \"$(basename "$(pwd)")\"" && git pull --all | grep -v "Fetching origin" | grep -v "Already up to date")' ';'

Теперь можно добавить всю эту магию в crontab на домашнем сервере, чтобы, скажем, раз в сутки в 12 ночи он делал бэкап. Можно добавить немного улучшайзеров: упаковывать в архивы по дате и так далее.