Резервное копирование и восстановление
Регулярные бэкапы защищают данные от отказа оборудования, случайного удаления и других катастроф.
Что копировать
Полный бэкап состоит из трёх частей:
- База данных — файл SQLite со всеми сообщениями, пользователями и метаданными
- Загруженные файлы — каталог
data/files/с файлами пользователей - Конфигурация —
config.tomlс мастер-секретом и ключами
Бэкап базы данных
Используйте встроенную команду для создания консистентного снимка:
freedom-mess backup -o /путь/к/бэкапу.db Команда использует VACUUM INTO из SQLite, что безопасно при работающем сервере.
Не копируйте файл SQLite напрямую при работающем сервере. Это может привести к повреждённому бэкапу. Всегда используйте команду
backup.
Скрипт полного бэкапа
#!/bin/bash
BACKUP_DIR="/backups/freedom-mess/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
# База данных (безопасно при работающем сервере)
freedom-mess backup -o "$BACKUP_DIR/database.db"
# Загруженные файлы
cp -r /opt/freedom-mess/data/files/ "$BACKUP_DIR/files/"
# Конфигурация
cp /opt/freedom-mess/config.toml "$BACKUP_DIR/config.toml"
echo "Бэкап завершён: $BACKUP_DIR" Автоматические бэкапы
Настройте cron для ежедневного запуска:
# Редактировать crontab
crontab -e
# Добавить строку (запуск ежедневно в 3:00)
0 3 * * * /opt/freedom-mess/backup.sh Рекомендуется копировать бэкапы на удалённый сервер для защиты от катастроф.
Восстановление
- Остановите сервер:
sudo systemctl stop freedom-mess - Замените базу:
cp backup.db /opt/freedom-mess/data/freedom-mess.db - Восстановите файлы:
cp -r files/ /opt/freedom-mess/data/files/ - Восстановите конфигурацию (при необходимости):
cp config.toml /opt/freedom-mess/config.toml - Запустите сервер:
sudo systemctl start freedom-mess
Сервер проверяет целостность базы данных при запуске. Если восстановленная база проходит проверку, сервер запускается нормально.
Обслуживание SQLite
Freedom Messenger автоматически обслуживает базу данных:
- Режим WAL — Write-Ahead Logging для параллельного чтения/записи
- Таймаут блокировки — 5 секунд
- Часовой WAL-чекпоинт — не даёт WAL-файлу расти бесконечно
- Инкрементальный auto-vacuum — освобождает место при удалении данных
- Проверка целостности при запуске — верифицирует консистентность базы