✅ Бэкап проектов Директории - архивирование файлов и папок
Базы данных 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
Формат расписания
минуты часы день месяц день_недели
Управление расписаниями
=== УПРАВЛЕНИЕ РАСПИСАНИЯМИ ===
Проекты с расписаниями:
- my-web-app 0 2 * * * | ✓ ✓
- remnashop 0 3 * * * | ✓ ✓
Действия:
- Настроить расписание для проекта
- Включить/выключить расписание проекта
- Обновить все cron задания
- Показать текущие cron задания
- Удалить все cron задания
- Тест выполнения по расписанию
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)
Статус: ✅ ВСЕ ПРОЕКТЫ УСПЕШНО ЗАБЭКАПЛЕНЫ
Настройки:
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 бэкапов
Действия:
-
Восстановить проект из последнего бэкапа
-
Выбрать проект для восстановления
-
Выбрать бэкап вручную
-
Показать все доступные бэкапы
Выбор бэкапа
=== ВЫБОР БЭКАПА ДЛЯ ВОССТАНОВЛЕНИЯ ===
Найдено бэкапов: 5
- my-web-app | 📁 2 | 🗄️ 1 | 45.2MB | 2024-01-15
- my-web-app | 📁 2 | 🗄️ 1 | 44.8MB | 2024-01-14
- remnawave | 📁 1 | 🗄️ 2 | 120.5MB | 2024-01-15
- remnawave | 📁 1 | 🗄️ 2 | 119.8MB | 2024-01-14
- 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. Установка
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
Проверить состояние
sudo br
Посмотреть статистику в главном меню Принудительный бэкап
sudo br --backup
Очистка старых бэкапов (автоматически или вручную)
sudo br
Выбрать пункт 3 Проверить логи Выбрать пункт 13
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)
Улучшения
✅ Автопоиск проектов - интеллектуальное сканирование /opt
✅ Улучшенная обработка ошибок - детализированные сообщения
✅ Оптимизация отправки файлов - архивирование перед отправкой
✅ HTML отчеты - красивые email уведомления
✅ Тестирование расписаний - проверка выполнения по времени
Исправления
🐛 Исправлено шифрование паролей - стабильная работа AES
🐛 Исправлена отправка Telegram - обработка больших файлов
🐛 Исправлено восстановление - корректное определение путей
🐛 Исправлены cron задания - правильное обновление
Backup Rebel v0.5 Beta
Лицензия: MIT
Разработано для удобного и надежного резервного копирования проектов.
Используйте на свой страх и риск.
Автор не несет ответственности за потерю данных или другие проблемы.
Docker - за контейнеризацию приложений
PostgreSQL - за надежные базы данных
Telegram API - за удобные уведомления
Linux сообществу - за отличные инструменты