init
This commit is contained in:
143
BACKUP_README.md
Normal file
143
BACKUP_README.md
Normal file
@@ -0,0 +1,143 @@
|
||||
# Бэкап и восстановление Gitea
|
||||
|
||||
Скрипты для бэкапа и восстановления Gitea в LXC контейнере на Proxmox.
|
||||
|
||||
## Файлы
|
||||
|
||||
| Скрипт | Где запускать | Описание |
|
||||
|--------|---------------|----------|
|
||||
| `backup-gitea-lxc.sh` | Внутри LXC | Бэкап на уровне приложения |
|
||||
| `backup-proxmox.sh` | На Proxmox хосте | Оркестрация бэкапа + vzdump |
|
||||
| `setup-backup-cron.sh` | На Proxmox хосте | Настройка автоматического бэкапа |
|
||||
| `restore-gitea.sh` | Внутри LXC | Восстановление из бэкапа |
|
||||
|
||||
## backup-gitea-lxc.sh
|
||||
|
||||
Запускается внутри LXC контейнера. Создаёт:
|
||||
- `database.sql` — pg_dump базы PostgreSQL
|
||||
- `gitea-dump.zip` — репозитории, LFS, attachments, avatars
|
||||
- `app.ini` — конфигурация Gitea
|
||||
|
||||
Настройки:
|
||||
|
||||
| Переменная | По умолчанию | Описание |
|
||||
|------------|--------------|----------|
|
||||
| `BACKUP_BASE` | `/var/backups/gitea` | Директория для бэкапов |
|
||||
| `DB_USER` | `gitea` | Пользователь PostgreSQL |
|
||||
| `DB_NAME` | `gitea` | Имя базы данных |
|
||||
| `KEEP_BACKUPS` | `7` | Сколько бэкапов хранить |
|
||||
| `REMOTE_BACKUP` | — | scp путь для копирования |
|
||||
|
||||
Пример:
|
||||
|
||||
```bash
|
||||
sudo ./backup-gitea-lxc.sh
|
||||
|
||||
KEEP_BACKUPS=14 REMOTE_BACKUP=user@nas:/backups ./backup-gitea-lxc.sh
|
||||
```
|
||||
|
||||
## backup-proxmox.sh
|
||||
|
||||
Запускается на Proxmox хосте. Выполняет:
|
||||
1. Запуск `backup-gitea-lxc.sh` внутри контейнера
|
||||
2. Копирование архива из LXC на Proxmox хост
|
||||
3. Создание vzdump контейнера (если `DO_VZDUMP=true`)
|
||||
4. Ротация старых бэкапов
|
||||
|
||||
Настройки:
|
||||
|
||||
| Переменная | По умолчанию | Описание |
|
||||
|------------|--------------|----------|
|
||||
| `LXC_ID` | `300` | ID контейнера Gitea |
|
||||
| `BACKUP_STORAGE` | `/var/lib/vz/dump` | Где хранить бэкапы |
|
||||
| `DO_VZDUMP` | `false` | Делать полный бэкап контейнера |
|
||||
| `VZDUMP_COMPRESS` | `zstd` | Сжатие vzdump |
|
||||
| `KEEP_BACKUPS` | `7` | Сколько gitea бэкапов хранить |
|
||||
| `KEEP_VZDUMP` | `3` | Сколько vzdump хранить |
|
||||
| `REMOTE_BACKUP` | — | scp путь для копирования |
|
||||
|
||||
Пример:
|
||||
|
||||
```bash
|
||||
LXC_ID=300 ./backup-proxmox.sh
|
||||
|
||||
LXC_ID=300 DO_VZDUMP=true ./backup-proxmox.sh
|
||||
```
|
||||
|
||||
## setup-backup-cron.sh
|
||||
|
||||
Настраивает автоматический бэкап через cron.
|
||||
|
||||
| Переменная | По умолчанию | Описание |
|
||||
|------------|--------------|----------|
|
||||
| `LXC_ID` | `300` | ID контейнера |
|
||||
| `BACKUP_TIME` | `12:00` | Время ежедневного бэкапа |
|
||||
|
||||
Расписание:
|
||||
- Ежедневно в указанное время: gitea dump + pg_dump
|
||||
- Воскресенье в 13:00: + полный vzdump контейнера
|
||||
|
||||
Пример:
|
||||
|
||||
```bash
|
||||
LXC_ID=300 BACKUP_TIME=03:00 ./setup-backup-cron.sh
|
||||
```
|
||||
|
||||
После установки:
|
||||
|
||||
```bash
|
||||
gitea-backup # ручной запуск
|
||||
DO_VZDUMP=true gitea-backup # с полным бэкапом
|
||||
tail -f /var/log/gitea-backup.log
|
||||
```
|
||||
|
||||
## restore-gitea.sh
|
||||
|
||||
Восстановление Gitea из бэкапа. Запускается внутри LXC после установки Gitea.
|
||||
|
||||
Поддерживает:
|
||||
- Архивы созданные через `gitea dump`
|
||||
- Нативные дампы PostgreSQL
|
||||
- Ручные бэкапы директорий
|
||||
|
||||
Настройки:
|
||||
|
||||
| Переменная | По умолчанию | Описание |
|
||||
|------------|--------------|----------|
|
||||
| `NEW_DOMAIN` | auto | Новый домен/IP |
|
||||
| `NEW_PORT` | `3000` | HTTP порт |
|
||||
| `DB_USER` | `gitea` | Пользователь PostgreSQL |
|
||||
| `DB_NAME` | `gitea` | Имя базы данных |
|
||||
| `DB_PASSWORD` | `gitea` | Пароль PostgreSQL |
|
||||
|
||||
Пример:
|
||||
|
||||
```bash
|
||||
sudo ./restore-gitea.sh /tmp/gitea-backup-20240115-120000.tar.gz
|
||||
|
||||
NEW_DOMAIN=git.example.com DB_PASSWORD=secret ./restore-gitea.sh /tmp/backup.tar.gz
|
||||
```
|
||||
|
||||
Выполняет:
|
||||
1. Распаковка архива
|
||||
2. Восстановление PostgreSQL
|
||||
3. Восстановление репозиториев и данных
|
||||
4. Обновление app.ini для нового сервера
|
||||
5. Регенерация SSH ключей и Git hooks
|
||||
6. Запуск Gitea
|
||||
|
||||
После восстановления проверьте:
|
||||
- Авторизация пользователей
|
||||
- Список репозиториев
|
||||
- Git clone/push операции
|
||||
|
||||
## Структура бэкапа
|
||||
|
||||
```
|
||||
gitea-backup-YYYYMMDD-HHMMSS.tar.gz
|
||||
├── database.sql # PostgreSQL дамп
|
||||
├── gitea-dump.zip # Данные Gitea
|
||||
├── app.ini # Конфигурация
|
||||
├── gitea-version.txt # Версия Gitea
|
||||
└── dump.log # Лог gitea dump
|
||||
```
|
||||
Reference in New Issue
Block a user