Инструкция: бэкап GitHub

Igor Kamyshev
Jul 14, 2019 · 2 min read

Наш код стоит очень много денег. Мы тратим на его создание сотни тысяч долларов, но совершенно не заботимся о сохранности — храним на одном коммерческом сервисе.

Image for post
Image for post
Photo by Markus Spiske on Unsplash

Я храню все свои проекты на GitHub, и недавно задумался о бэкапе. Не проблема сохранить сам код — просто клонируем репозиторий и все хорошо. Остаются ишью, пулреквесты, комментарии, вики.

Есть отличный скрипт на Python — python-github-backup. Но это Python, а значит проблемы с версиями, установкой зависимостей и виртуальными окружениями. Я не люблю этих сложностей, поэтому хотел найти докер-контейнер, который бы прятал внутри себя этот скрипт.

И такой контейнер существует — github-backup-docker. Пользоваться им супер просто.

Инструкция

Сначала нужно выпустить токен для доступа к GitHub API. В разделе Personal access tokens нажимаем кнопку Generate new token и даем ему доступ на чтение всего что собираемся бэкапить.

Для использования нужна любая машина, на которой можно запускать докер-контейнеры. Я взял сервер на DigitalOcean, там можно выбрать версию с предустановленным докером, стоит минимальный дроплет всего 5 долларов в месяц.

Не обязательно на дроплете размещать только бэкап GitHub, можно там же запускать еще что-нибудь.

На сервере следует разместить примерно такой docker-compose.yml:

version: "2"services:
github-backup:
image: umputun/github-backup:latest
container_name: "github-backup"
hostname: "github-backup"
restart: always
logging:
driver: json-file
options:
max-size: "10m"
max-file: "5"
environment:
- GITHUB_USER=name_1,name2,name_2
- TOKEN=token
- MAX_BACKUPS=2
- TIME_ZONE=Europe/Moscow
volumes:
- ./data:/srv/var

Где:

  • name_1, name_2, name_3 — те GitHub пользователи или организации, которые следует бэкапить.
  • token — ранее полученный токен для доступа к GitHub API.
  • ./data — относительный путь до папки на сервере, куда следует складывать бэкапы.

Еще можно установить TIME_ZONE (папки, куда кладутся бэкапы содержат в имени время, удобно когда оно местное) и MAX_BACKUPS (полезно хранить не только последнюю доступную версию, но и пару предыдущих).

После первичной настройки запускаем контейнер командой docker-compose up -d и получаем удовольствие. Каждый день контейнер будет выкачивать все данные из указанных GitHub аккаунтов и сохранять их на диск.

Для параноиков

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

Резюме

Последнее время в работе GitHub все чаще наблюдаются сбои. За май зафиксировано три эпизода частичной доступности, за июнь — два. Я не готов доверять код сервису, который так относится к надежности работы, но и терять в удобстве использования, переезжая на альтернативные решения не хочется.

Потратив 10 минут времени и совсем немного денег можно обеспечить себе спокойную жизнь, удобство и комфорт работы.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store