Паранойя не дремлет, поэтому всегда лучше иметь бэкап всех своих проектов, чтобы в случае какого-либо казуса ничего не потерялось. А лучше два бэкапа….
В качестве одного у меня есть свой сервер 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 ночи он делал бэкап. Можно добавить немного улучшайзеров: упаковывать в архивы по дате и так далее.