🦊 Как создавать резервные копии git-репозиториев с помощью gickup |

🦊 Как создавать резервные копии git-репозиториев с помощью gickup

Мануал

Git – это, безусловно, самая используемая система контроля версий.

Первоначально созданная Линусом Торвальдсом, она является бесплатным программным обеспечением с открытым исходным кодом и выпускается под лицензией GPLv2.

Многие онлайн-платформы, такие как Github или Gitlab, позволяют разработчикам легко хранить и отслеживать изменения в своем коде в публичных или частных репозиториях, используя git в качестве бэкенда.

В этой статье мы поговорим о gickup, хорошем инструменте, написанном на Go, который позволяет нам создавать резервные копии наших git-репозиториев и зеркалировать их локально или с одной платформы на другую.

Установка

Gickup – это программное обеспечение с открытым исходным кодом: его код размещен на Github.

На момент написания статьи инструмент еще не доступен ни в одном репозитории дистрибутива Linux, поэтому, если мы не хотим компилировать его, есть два основных способа его использования:

  • загрузив предварительно скомпилированный бинарный файл с Github
  • с помощью специального образа Docker

Использование предварительно скомпилированного бинарного файла

На момент написания статьи 0.10.17 является последней доступной версией gickup; мы можем загрузить предварительно скомпилированный двоичный файл со страницы релизов проекта на Github.

Предварительно скомпилированные двоичные файлы существуют для всех основных операционных систем и для наиболее распространенных архитектур.

Мы хотим загрузить версию для Linux, конечно, вместе с файлом *checksum.txt, чтобы проверить целостность данных.

Чтобы запустить gickup на моей машине, мне нужно загрузить версию “amd64”:

curl --location --remote-name-all https://github.com/cooperspencer/gickup/releases/download/v0.10.17/{gickup_0.10.17_linux_amd64.tar.gz,gickup_0.10.17_checksums.txt}

Для проверки контрольной суммы tarball, предполагая, что два файла находятся в одном каталоге (как это следует из выполнения вышеприведенной команды), мы можем выполнить команду:

sha256sum -c gickup_0.10.17_checksums.txt

Если контрольная сумма соответствует записанной в файле, мы должны увидеть сообщение, подобное приведенному ниже:

gickup_0.10.17_linux_amd64.tar.gz: OK

Чтобы извлечь tarball, выполните команду:

tar -xvzf gickup_0.10.17_linux_amd64.tar.gz

Чтобы использовать приложение, нам нужно просто запустить извлеченный двоичный файл, как и любой другой исполняемый файл, передав в качестве первого аргумента путь к файлу конфигурации (подробнее об этом позже):

./gickup /path/to/conf.yml

Использование специального образа Docker

Если мы не хотим использовать предварительно скомпилированный бинарный файл, в качестве альтернативы мы можем загрузить файл docker-compose.yml и запустить инструмент в контейнере с помощью docker или podman.

Мы можем загрузить файл прямо из командной строки:

curl --remote-name https://raw.githubusercontent.com/cooperspencer/gickup/main/docker-compose.yml

Следующий шаг заключается в размещении конфигурационного файла, который в данном случае должен иметь имя conf.yml, в той же директории, что и файл, который мы только что скачали.

Для того чтобы запустить резервное копирование, нам нужно просто запустить:

sudo docker-compose up

Или, если вы используете podman вместо docker:

podman-compose up

Если вы используете docker и ваш пользователь входит в группу “docker”, вы можете не использовать sudo; вместо этого podman может работать без привилегий root.

Это инструкция, которую мы можем использовать для запуска gickup. Мы можем указать, что и как должен делать инструмент, с помощью конфигурационного файла, о котором мы говорили выше.

Рассмотрим пример его использования.

Конфигурационный файл gickup

Gickup использует конфигурационный файл YAML, в котором мы определяем источники и места назначения наших резервных копий, а также другие полезные действия.

Приведем несколько примеров. В рамках этого руководства я загружу все свои репозитории с Github на локальную машину:

source:
  github:
    - token: <github-token>
      username: egdoc

destination:
  local:
    - path: ~/Downloads/gitbackup
      structured: true
      zip: true
      keep: 5
      bare: true

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

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

Сгенерировать токен Github довольно просто: достаточно перейти в “Settings -> Developer settings -> Personal access tokens” в вашем профиле Github, выбрать вид токена и предоставить ему минимально необходимый набор привилегий.

В данном случае будет достаточно просто установить флажок “repo”.

Как только токен будет сгенерирован, сохраните его, поскольку в будущем вы не сможете его визуализировать.

Следующий ключ, который я использовал в конфигурационном файле, – username, чтобы указать пользователя для процесса клонирования.

В данном случае, поскольку я хотел, чтобы хранилища были клонированы локально, я использовал ключ path, чтобы указать локальный путь, и ключ structured, чтобы gickup клонировал хранилища в дерево каталогов, которое отражает исходный сайт и имя пользователя.

В данном случае репозитории, размещенные на Github, будут клонированы в каталог ~/Downloads/gitbackup/github.com/egdoc.

Ключ zip используется для указания того, что мы хотим, чтобы каждый клонированный репозиторий был запечатан; ключ keep, вместо этого, используется для указания количества “запечатанных” резервных копий, которые должны быть сохранены.

Наконец, установив значение ключа bare в true, я указал, что хочу, чтобы хранилища были клонированы как “пустые”.

Зеркальное копирование репозиториев с одной платформы на другую

В предыдущем примере я клонировал все свои репозитории, размещенные на Github, на локальную машину.

Однако с помощью gickup мы также можем клонировать репозитории непосредственно с одной платформы на другую.

Предположим, я хочу зеркалировать все репозитории на Gitlab.

Вот что я могу написать:

source:
  github:
    - token: <github-token>
      username: egdoc

destination:
  gitlab:
    - token: <gitlab-token>
      username: egdoc

Во всех примерах вы можете видеть, что я указал только название платформы (например, “github” или “gitlab”), а не полный URL платформы.

Это возможно, потому что gickup имеет встроенную поддержку этих платформ. В качестве исходного кода поддерживаются следующие платформы:

  • Github
  • Gitea
  • Gogs
  • Gitlab
  • Bitbucket
  • Onedev
  • Sourcehut

Кроме того, ключ “Any” может быть использован для указания информации о платформах, не включенных в приведенный выше список.

Платформы, поддерживаемые в качестве места назначения, следующие:

  • Gitea
  • Gogs
  • Gitlab
  • Local

Заключение

В этом руководстве мы рассказали о gickup, хорошем инструменте с открытым исходным кодом, написанном на Go, который мы можем использовать для зеркалирования наших git-репозиториев локально или с одной веб-платформы на другую.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий