Автоматическое резервное копирование EspoCRM
В отличие от облачных CRM, при установке на свой сервер (On-Premise) вы несете полную ответственность за сохранность данных. Жесткий диск сервера может выйти из строя, а менеджер может случайно массово удалить важные сделки.
Что именно нужно бэкапить?
Для полного восстановления системы требуется сохранять две сущности:
- Дамп базы данных (MariaDB / MySQL): Хранит тексты писем, контакты, воронки, пароли и всю структуру. Это самый критичный компонент.
- Файлы системы (Директория data): Хранит вложения к письмам, загруженные документы, аватарки и кастомные скрипты расширений.
Скрипт автоматического бэкапа
Мы настроим bash-скрипт, который будет архивировать файлы и делать дамп базы данных, сохраняя архивы в отдельную локальную папку на сервере.
#!/bin/bash
# Настройки
BACKUP_DIR="/var/backups/espocrm"
DATE=$(date +"%Y-%m-%d_%H-%M")
CONTAINER_DB="espocrm_mariadb_1"
DB_USER="espo_user"
DB_PASS="secure_db_password"
DB_NAME="espocrm"
DATA_DIR="/opt/espocrm/data"
# Создаем директорию, если ее нет
mkdir -p "$BACKUP_DIR"
# 1. Дамп базы данных
docker exec $CONTAINER_DB mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > "$BACKUP_DIR/db_$DATE.sql"
gzip "$BACKUP_DIR/db_$DATE.sql"
# 2. Архивация файлов (вложения и кастомные данные)
tar -czf "$BACKUP_DIR/files_$DATE.tar.gz" -C "$DATA_DIR" .
# 3. Удаление старых копий (старше 14 дней)
find "$BACKUP_DIR" -type f -name "*.gz" -mtime +14 -exec rm {} \;
echo "Backup completed successfully for $DATE"
Настройка расписания в Cron
Чтобы скрипт выполнялся каждую ночь в 02:00, добавляем его в системный планировщик cron. Выполните команду crontab -e и добавьте строку:
0 2 * * * /root/scripts/espo_backup.sh >> /var/log/espo_backup.log 2>&1
Важное примечание: Данный скрипт сохраняет копии локально на сервере. Это спасет от программных сбоев или случайного удаления данных. Однако в случае физической гибели жесткого диска самого VPS сервера эти бэкапы будут утеряны вместе с ним.
Как проверить бэкап?
Бэкап Шредингера - это бэкап, который ни разу не пытались восстановить. Обязательно тестируйте архивы:
- Разархивируйте
db_дата.sql.gzи проверьте, что внутри есть текстовые SQL-команды `CREATE TABLE`. - Раз в полгода поднимайте тестовый контейнер EspoCRM на домашнем ПК и пытайтесь "накатить" дамп, чтобы убедиться в его работоспособности.
Нужна надежная защита данных?
В рамках настройки под ключ я настраиваю Healthcheck-мониторинг, автоматические бэкапы и провожу инструктаж по восстановлению системы после сбоев.
Рассчитать стоимость настройки CRM