Гайд: Создание бэкапов серверов через Git сервисы

Mr_panica

XenForo one 💖
Сообщения
942
Реакции
460
В этом гайде расскажу как можно сделать автоматические бэкапы для сервера через гит сервисы, например github или gitverse.

1765862601171.png


Плюсы:
-Можно скачать всегда удалённо.
-Вы видите всю историю изменений на сервере.
-Можно быстро скачать сервер с гита.
-Можно удобно отслеживать действия ваших администраторов или искать что-то в логах через индексирование гита.

Минусы:
-История изменений всё ещё хранится локально на VDS (занимает место).
-Гит сервис может удалить репозиториий (но скорее всего предупредит)
-Гит может вас забанить и вы лишитесь частных репозиториев (но локальный останется)

1. Регаемся на любом из гит сервисов.
Большинство гит сервисов не разрешают большие частные репозитории или репозитории для бэкапов.
Но github или gitverse вроде позволяют, если не наглеть.

2. Создаём ключи SSH на VDS:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
*Почта связанная с git сервисом*

Вам предложит сохранить ключ по стандартному пути, нажимаем Enter.
Затем предложит создать пароль для ключа, можно не создавать.

Запустите SSH агент:
eval "$(ssh-agent -s)"

Добавьте ключ:
ssh-add ~/.ssh/id_ed25519

*Если другое имя/путь то измените
Готово, ваш ключ можно посмотреть командой: cat ~/.ssh/id_ed25519.pub

Покажет что-то похожее на:

C-подобный:
root@vds-102337:~# cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AASAC3Nz4C1lZDI1N3EaAAAAIcFstCLJEl7izbDhdBM2HXsdxhi+o2hHDfAPsGPnnMR root@vds-102337.myarena.ru

Идём в настройки профиля на гит и прописываем там ключи:
1765861396434.png
1765861530614.png

2. Создаём новый репозиторий гит (не забудьте поставить чтобы он был приватным)

3. Создаём файлик .gitignore в корне игрового сервера (где папка addons)
Там прописываются файлы и папки которые не нужно заносить в гит.

Например у меня это:
C-подобный:
*
!cfg/**
!cfg
!addons
!addons/**
Но тут от обратного, игнорируем все файлы кроме всего содержимого cfg и addons.

Остальное мне не нужно.

3. Инициируем гит в корне сервера.

В консоле SSH переходим в папку сервера:
cd /var/lib/pterodactyl/volumes/21a10f59-ffd8-438c-b32f-ece79364c2be/tf - это пример.

Далее прописываем команды который нам дал гит при создании репозитория (выберите режим SSH, а не https:
C-подобный:
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:MrPanica/ServerBackup.git
git push -u origin main

*Убедитесь что вы создали файлик .gitignore и он находится в вашей рабочей папке где вы сейчас работаете иначе можете скопировать весь сервер.

4. Добавления автоматического бэкапа.

Пишем в консоле VDS:
crontab -e

У вас откроется файлик, на последнюю пустую строчку пропишите:
45 3 * * * cd /var/lib/pterodactyl/volumes/bfeeccfc-41d7-455d-ac43-d0ea494683d1/tf && git add . && git commit -m "Автоматический коммит на $(date +\%Y-\%m-\%d)" && git push origin main
Каждый день в 3:45 будет запускаться скрипт.
*Замените /var/lib/pterodactyl/volumes/bfeeccfc-41d7-455d-ac43-d0ea494683d1/tf на ваш путь до сервера с папкой addons.
Потом нужно закрыть режим редактирования crontab, он предложит сохранить.

У меня это комбинации:
Ctrl + x - закрытие режима редактирования.
Затем он предложит сохранить - нажимаете y (именно английскую)
Затем нажимаете enter.

Должен написать:
crontab: installing new crontab

Можете повторно зайти в режим редактирования и убедиться что там есть новая запись.

Можно так же сделать что бы гит чистил или не делал более X коммитов или не более старые чем X дней, чтобы не разрастались логи коммитов, но уже сами, если нужно.

По идеи всё.
Он может выдать ошибку безопасности, насколько помню там нужно прописать команду которую он даёт.
 
Последнее редактирование:
Сверху Снизу