Skip to content

Универсальный скрипт резервного копирования и восстановления

License

Notifications You must be signed in to change notification settings

Balbuto/BackupReBeL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Backup Rebel v0.5 Beta

Умный скрипт бэкапа проектов с уведомлениями

Проектно-ориентированное резервное копирование с автоматическими бэкапами по расписанию

  1. 📋 Оглавление

  2. Основные возможности

  3. Системные требования

  4. Установка

  5. Быстрый старт

  6. Меню управления

  7. Проекты

  8. Расписания

  9. Уведомления

  10. Командная строка

  11. Восстановление

  12. Примеры использования

  13. Структура файлов

🚀 Основные возможности

✅ Бэкап проектов Директории - архивирование файлов и папок

Базы данных PostgreSQL - автоматический дамп БД из Docker контейнеров

Автопоиск паролей - интеллектуальный поиск в .env файлах

⏰ Автоматизация

Гибкие расписания - cron-like формат планирования

Автоуправление cron - автоматическое создание/обновление заданий

Проверка расписаний - тест выполнения по времени

📱 Уведомления

Telegram - сообщения + отправка файлов (архивом)

Email - HTML отчеты + вложения (SMTP/sendmail)

Гибкие настройки - выбор условий отправки

🔄 Восстановление

Выбор из списка - интерактивный выбор бэкапа

Частичное восстановление - только директории или только БД

Автоматическое определение - поиск контейнеров и путей

🛠 Управление

Интерактивное меню - удобный TUI интерфейс

Автопоиск проектов - сканирование /opt на наличие проектов

Экспорт/импорт - сохранение конфигурации

💻 Системные требования

Обязательные компоненты

OS: Linux (Ubuntu/Debian/CentOS)

Bash: версия 4.0+

Права: root доступ

Docker: установлен и запущен

PostgreSQL: в Docker контейнерах

Зависимости

Основные утилиты

docker, tar, gzip, psql, crontab, grep, openssl, curl, bc

Дополнительные (устанавливаются автоматически)

jq, sendmail

📦 Установка

1. Скачивание скрипта

wget -O /usr/local/bin/backup-rebel.sh https://raw.githubusercontent.com/Balbuto/BackupReBeL/refs/heads/main/backup-rebel-beta.sh

chmod +x /usr/local/bin/backup-rebel.sh

2. Создание симлинка

ln -s /usr/local/bin/backup-rebel.sh /usr/local/bin/br

3. Первый запуск

sudo backup-rebel.sh

или sudo br

⚡ Быстрый старт

1. Автопоиск проектов

sudo br --discover-projects

Скрипт просканирует /opt и найдет проекты с .env файлами

2. Настройка Telegram

sudo br

Выбрать: 10 → Настроить Telegram уведомления Введите Bot Token и Chat ID

3. Тестовый бэкап

sudo br --backup

Запустит бэкап всех проектов с отправкой отчетов

🎮 Меню управления

Главное меню

Статистика:

📂 Проектов: 3

✅ Включено проектов: 3

📁 Всего директорий: 5

🗄️ Всего БД: 2

⏲️ Проектов с расписанием: 2

📱 Telegram: ВКЛ (метод: combined)

📧 Email: ВЫКЛ

💾 Доступно бэкапов: 12

Разделы меню

Бэкап всех включенных проектов + отчеты

Бэкап выбранных проектов + отчеты

Очистить старые бэкапы

Управление расписаниями

Показать текущие cron задания

Тест выполнения по расписанию

Восстановление проектов из бэкапов

Менеджер проектов

Основные настройки

Настроить Telegram уведомления

Настроить Email уведомления

Показать последний отчет

Показать логи

Выход

📂 Проекты

Создание проекта

=== СОЗДАНИЕ НОВОГО ПРОЕКТА ===

Введите название проекта: my-web-app

✓ Проект 'my-web-app' создан (ID: proj_1700000000_12345)

Хотите настроить расписание автоматического бэкапа? (y/N): y

Хотите добавить директории в проект? (y/N): y

Хотите добавить базы данных в проект? (y/N): y

Структура проекта

Проект: my-web-app

Статус: включен ✅

Директорий: 2

Баз данных: 1

Расписание: 0 2 * * * (активно)

Автопоиск проектов

=== АВТОПОИСК ПРОЕКТОВ В /opt ===

Сканирование /opt...

Найдено директорий с .env: 4

Создаем проект: remnawave

📁 Директория: /opt/remnawave

⏲️  Расписание: ежедневно в 2:00

Анализ .env файла...

Найдено в .env: DB=db, USER=user

✓ Добавляем БД: postgres-1 → db

⏰ Расписания

Формат расписания

минуты часы день месяц день_недели

Управление расписаниями

=== УПРАВЛЕНИЕ РАСПИСАНИЯМИ ===

Проекты с расписаниями:

  1. my-web-app 0 2 * * * | ✓ ✓
  2. remnashop 0 3 * * * | ✓ ✓

Действия:

  1. Настроить расписание для проекта
  2. Включить/выключить расписание проекта
  3. Обновить все cron задания
  4. Показать текущие cron задания
  5. Удалить все cron задания
  6. Тест выполнения по расписанию

📱 Уведомления

Telegram

Настройки:

Bot Token: 1234567890:ABCdefGHIjkl...

Chat ID: -1001234567890

Thread ID: 123 (опционально)

Отправлять файлы: true

Макс. размер файла: 50MB

Уведомлять об успехе: true

Уведомлять об ошибках: true

Сжимать перед отправкой: true

Режим разметки: HTML

Метод отправки: архивом (combined)

Пример Telegram сообщения

📊 ОТЧЕТ О БЭКАПЕ

Хост: server-01

Дата: 2024-01-15 14:30:45

Длительность: 127 сек

Статистика:

Успешно: 3 проектов

Ошибки: 0 проектов

⏭️ Пропущено: 0 проектов

📁 Всего: 3 проектов

Созданные архивы (3):

my-web-app_20240115_143045.tar.gz (45.2MB)

remnawave_20240115_143045.tar.gz (120.5MB)

remnashop_20240115_143045.tar.gz (78.3MB)

Статус:ВСЕ ПРОЕКТЫ УСПЕШНО ЗАБЭКАПЛЕНЫ

Email

Настройки:

SMTP сервер: smtp.gmail.com:587

SMTP пользователь: your-email@gmail.com

SMTP пароль: ******

Отправитель (From): backup@yourdomain.com

Получатели (To): admin@yourdomain.com, dev@yourdomain.com

Префикс темы: [Backup-Rebel]

Отправлять отчеты: true

Отправлять файлы: true

Макс. размер файла: 25MB

Сжимать вложения: true

Уведомлять об успехе: true

Уведомлять об ошибках: true

Поддерживаемые методы отправки

SMTP через curl (основной)

Sendmail (резервный)

⌨️ Командная строка

Справка

sudo br --help

Доступные команды

Команда Описание Пример

--auto Автоматический бэкап всех проектов br --auto

--backup-project ID Бэкап конкретного проекта по ID br --backup-project proj_123456

--discover-projects Автопоиск проектов в /opt br --discover-projects

--projects Управление проектами через меню br --projects

--backup Запустить бэкап всех проектов br --backup

--restore Запустить восстановление проектов br --restore

--schedule Управление расписаниями br --schedule

--cron Обновить cron задания br --cron

--help или -h Показать справку br --help

Примеры использования

Автопоиск и настройка проектов

sudo br --discover-projects

Ручной бэкап всех проектов

sudo br --backup

Восстановление последнего бэкапа

sudo br --restore

Настройка расписаний

sudo br --schedule

Принудительное обновление cron

sudo br --cron

🔄 Восстановление

Процесс восстановления

=== ВОССТАНОВЛЕНИЕ ПРОЕКТОВ ===

Доступные проекты для восстановления:

my-web-app - 5 бэкапов

remnawave - 7 бэкапов

remnashop - 3 бэкапов

Действия:

  1. Восстановить проект из последнего бэкапа

  2. Выбрать проект для восстановления

  3. Выбрать бэкап вручную

  4. Показать все доступные бэкапы

Выбор бэкапа

=== ВЫБОР БЭКАПА ДЛЯ ВОССТАНОВЛЕНИЯ ===

Найдено бэкапов: 5

  1. my-web-app | 📁 2 | 🗄️ 1 | 45.2MB | 2024-01-15
  2. my-web-app | 📁 2 | 🗄️ 1 | 44.8MB | 2024-01-14
  3. remnawave | 📁 1 | 🗄️ 2 | 120.5MB | 2024-01-15
  4. remnawave | 📁 1 | 🗄️ 2 | 119.8MB | 2024-01-14
  5. remnashop | 📁 3 | 🗄️ 1 | 78.3MB | 2024-01-15

Параметры восстановления

=== ИНФОРМАЦИЯ О БЭКАПЕ ===

Проект: my-web-app

Дата создания: 2026-01-15 14:30:45

Директорий: 2

Баз данных: 1

Восстановить директории? (Y/n): Y

Восстановить базы данных? (Y/n): Y

📊 Примеры использования

Сценарий 1: Начальная настройка

1. Установка

wget -O /usr/local/bin/br https://raw.githubusercontent.com/Balbuto/BackupReBeL/refs/heads/main/backup-rebel-beta.sh

chmod +x /usr/local/bin/br

2. Автопоиск проектов

sudo br --discover-projects

3. Настройка Telegram sudo br

Выбрать пункт 10, ввести Bot Token и Chat ID

4. Тестовая отправка

В меню Telegram выбрать "Тестовая отправка сообщения"

5. Настройка расписаний

sudo br --schedule

Для каждого проекта настроить удобное время

6. Тестовый бэкап

sudo br --backup

Сценарий 2: Ежедневное обслуживание

Проверить состояние

sudo br

Посмотреть статистику в главном меню Принудительный бэкап

sudo br --backup

Очистка старых бэкапов (автоматически или вручную)

sudo br

Выбрать пункт 3 Проверить логи Выбрать пункт 13

Сценарий 3: Восстановление после сбоя

1. Просмотреть доступные бэкапы

sudo br --restore

Выбрать пункт 4

2. Выбрать нужный бэкап

Выбрать пункт 3 → выбрать из списка

3. Выполнить восстановление Следовать инструкциям на экране

4. Проверить результат Убедиться, что директории и БД восстановлены

🔧 Технические детали

Алгоритм бэкапа

Подготовка:

Проверка зависимостей

Создание временных директорий

Загрузка конфигурации

Бэкап директорий:

Рекурсивное архивирование tar.gz

Сохранение прав доступа

Расчет размера

Бэкап баз данных:

Поиск паролей в .env файлах

Экспорт через pg_dump

Сжатие gzip

Создание финального архива:

Объединение всех файлов

Добавление метаданных

Расчет контрольных сумм

Очистка:

Удаление временных файлов

Вращение старых бэкапов

Безопасность

Шифрование паролей: AES-256-CBC

Защита конфигов: chmod 600

Root проверка: обязательный запуск от root

Изоляция временных файлов: автоматическая очистка

Логирование

Уровни логирования

INFO # Информационные сообщения

SUCCESS # Успешные операции

WARNING # Предупреждения

ERROR # Ошибки

DEBUG # Отладочная информация

CRON # Cron-задания

SCHEDULE # Расписания

PROJECT # Проекты

DB # Базы данных

TELEGRAM # Telegram уведомления

EMAIL # Email уведомления

RESTORE # Восстановление

PASS # Пароли

ENV # .env файлы

⚠️ Решение проблем

Распространенные ошибки

Ошибка: "Docker не запущен или нет прав доступа"

Проверить статус Docker

sudo systemctl status docker

Запустить Docker

sudo systemctl start docker

Добавить пользователя в группу docker

sudo usermod -aG docker $USER

Ошибка: "Telegram Bot Token слишком короткий"

Проверить токен

echo $TELEGRAM_BOT_TOKEN | wc -c

*Должно быть 40+ символов

Получить новый токен у @BotFather

Ошибка: "Не удалось подключиться к БД"

Проверить контейнер

docker ps | grep postgres

Проверить доступность

docker exec postgres-container psql -U postgres -l

Проверить .env файл

cat /opt/project/.env | grep POSTGRES

Ошибка: "Архив имеет нулевой размер"

Проверить права доступа

ls -la /var/backup-rebel/

Проверить место на диске

df -h

Проверить логи

tail -50 /var/backup-rebel/backup.log

Отладка

Подробное логирование

export DEBUG=true

sudo br --backup

Проверка размера файлов

sudo br

Выбрать пункт 13 (Логи)

Тест отправки Telegram

sudo br

Telegram → Тестовая отправка сообщения

Telegram → Тестовая отправка файла

Telegram → Детальная проверка Telegram

Тест отправки Email

sudo br

Email → Тестовая отправка email

📞 Поддержка

Полезные команды для диагностики

Проверка версии

bash --version

Проверка зависимостей

for cmd in docker tar gzip psql crontab grep openssl curl bc jq sendmail; do command -v $cmd && echo "✓ $cmd" || echo "✗ $cmd" done

Проверка конфигурации

ls -la /etc/bakup-rebel/ cat /var/backup-rebel/backup.log | tail -20

Проверка cron заданий

crontab -l | grep -A 5 "АВТОМАТИЧЕСКИЕ БЭКАПЫ"

Лог-файлы

Основной лог: /var/backup-rebel/backup.log

Cron лог: системный лог cron (/var/log/syslog или /var/log/cron)

Telegram ошибки: в основном логе (уровень TELEGRAM)

Email ошибки: в основном логе (уровень EMAIL)

🆕 Что нового в v0.5 Beta

Улучшения

✅ Автопоиск проектов - интеллектуальное сканирование /opt

✅ Улучшенная обработка ошибок - детализированные сообщения

✅ Оптимизация отправки файлов - архивирование перед отправкой

✅ HTML отчеты - красивые email уведомления

✅ Тестирование расписаний - проверка выполнения по времени

Исправления

🐛 Исправлено шифрование паролей - стабильная работа AES

🐛 Исправлена отправка Telegram - обработка больших файлов

🐛 Исправлено восстановление - корректное определение путей

🐛 Исправлены cron задания - правильное обновление

📝 Лицензия

Backup Rebel v0.5 Beta

Лицензия: MIT

Разработано для удобного и надежного резервного копирования проектов.

Используйте на свой страх и риск.

Автор не несет ответственности за потерю данных или другие проблемы.

🙏 Благодарности

Docker - за контейнеризацию приложений

PostgreSQL - за надежные базы данных

Telegram API - за удобные уведомления

Linux сообществу - за отличные инструменты

About

Универсальный скрипт резервного копирования и восстановления

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages