# Github Backup


Github на днях писал о том, что разработчиков из России пока не планируют блокировать. Но что будет дальше, никому не известно.

Задумался о создании бекапа своих репозиториев. Нашел решение от Umputun: [github-backup-docker](https://github.com/umputun/github-backup-docker), которое базируется на [питон-версии](https://github.com/josegonzalez/python-github-backup). Немного пошаманил, обновив версию питона, добавил ряд переменных для более удобного управления работой программы, все разместил в своем форке: [juev/github-backup-docker](https://github.com/juev/github-backup-docker). Создал [PR](https://github.com/umputun/github-backup-docker/pull/3) с изменениями. 

Одним из существенных изменений, на мой взгляд, по сравнению с версией умпутуна, является отказ от использования отдельных директорий под каждый бекап. Просто потому, что git сам по себе уже предоставляет историю изменений и создав один раз копию, нужно лишь обновлять ее, подтягивая новые изменения.

Достаточно склонировать репозиторий, создать копию файла `.env-example` под именем `.env` и прописать значения для переменных:

```bash
cd works
git clone https://github.com/juev/github-backup-docker.git
cd github-backup-docker
cp .env-example .env
```

Переходим на страницу [github.com/settings/tokens](https://github.com/settings/tokens), генерируем новый токен, разрешающий работать с репозиториями. Указываем в `.env` файле значения для переменных:

* `GITHUB_USER=umputun` -- соответственно имя пользователя
* `GITHUB_ACCESS_TOKEN=token` -- созданный токен для авторизации
* `TIME_ZONE=America/Chicago` -- таймзона
* `SLEEP="1d"` -- на сколько засыпать перед следующим запуском (по умолчанию один день)
* `ARGS="--all --private"` -- параметры запуска, передаваемые в питон-программу, за подробностями обращайтесь по [ссылке](https://github.com/josegonzalez/python-github-backup).

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

```bash
docker-compose build
docker-compose up -d
```

Проверить корректность работы можно проверив логи:

```bash
docker-compose logs -f
```

Я запустил контейнер на своем Raspbbery PI, с обновлением репозиториев раз в час. И теперь у меня дома есть копия всех моих изменений. И чтобы не происходило с Github, у меня под рукой теперь есть резервная копия всех репозиториев и файлов.

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


