Files
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

196 lines
6.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт резервного копирования проекта ERV
# Автор: Фёдор
# Дата: $(date +%Y-%m-%d)
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Настройки
PROJECT_PATH="/var/www/fastuser/data/www/erv.clientright.ru"
BACKUP_DIR="/var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools/backups"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="ci20465_erv"
DB_USER="ci20465_erv"
DB_PASS="c7vOXbmG"
# Создаем директорию для бэкапов если её нет
mkdir -p "$BACKUP_DIR"
echo -e "${GREEN}=== Резервное копирование проекта ERV ===${NC}"
echo "Дата: $(date)"
echo "Проект: $PROJECT_PATH"
echo "Бэкап директория: $BACKUP_DIR"
echo ""
# Функция для логирования
log() {
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
}
error() {
echo -e "${RED}[$(date '+%Y-%m-%d %H:%M:%S')] ОШИБКА:${NC} $1"
}
warning() {
echo -e "${YELLOW}[$(date '+%Y-%m-%d %H:%M:%S')] ПРЕДУПРЕЖДЕНИЕ:${NC} $1"
}
# Проверяем существование проекта
if [ ! -d "$PROJECT_PATH" ]; then
error "Директория проекта не найдена: $PROJECT_PATH"
exit 1
fi
log "Начинаем резервное копирование..."
# 1. Резервное копирование базы данных
log "Создаем резервную копию базы данных..."
DB_BACKUP_FILE="$BACKUP_DIR/erv_db_$DATE.sql"
if mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$DB_BACKUP_FILE" 2>/dev/null; then
log "База данных успешно сохранена: $DB_BACKUP_FILE"
# Сжимаем файл БД
gzip "$DB_BACKUP_FILE"
log "База данных сжата: ${DB_BACKUP_FILE}.gz"
else
error "Не удалось создать резервную копию базы данных"
exit 1
fi
# 2. Резервное копирование файлов проекта
log "Создаем резервную копию файлов проекта..."
FILES_BACKUP_FILE="$BACKUP_DIR/erv_files_$DATE.tar.gz"
# Исключаем ненужные папки и файлы
tar -czf "$FILES_BACKUP_FILE" \
--exclude="$PROJECT_PATH/uploads/*" \
--exclude="$PROJECT_PATH/cache/*" \
--exclude="$PROJECT_PATH/vendor/*" \
--exclude="$PROJECT_PATH/.git" \
--exclude="$PROJECT_PATH/*.log" \
-C "$(dirname "$PROJECT_PATH")" \
"$(basename "$PROJECT_PATH")" 2>/dev/null
if [ $? -eq 0 ]; then
log "Файлы проекта успешно сохранены: $FILES_BACKUP_FILE"
else
error "Не удалось создать резервную копию файлов"
exit 1
fi
# 3. Резервное копирование критически важной папки cache
log "Создаем резервную копию папки cache (критически важно)..."
CACHE_BACKUP_FILE="$BACKUP_DIR/erv_cache_$DATE.tar.gz"
if [ -d "$PROJECT_PATH/cache" ]; then
tar -czf "$CACHE_BACKUP_FILE" -C "$PROJECT_PATH" cache 2>/dev/null
if [ $? -eq 0 ]; then
log "Папка cache успешно сохранена: $CACHE_BACKUP_FILE"
else
warning "Не удалось создать резервную копию папки cache"
fi
else
warning "Папка cache не найдена"
fi
# 4. Резервное копирование папки uploads (пользовательские файлы)
log "Создаем резервную копию папки uploads..."
UPLOADS_BACKUP_FILE="$BACKUP_DIR/erv_uploads_$DATE.tar.gz"
if [ -d "$PROJECT_PATH/uploads" ]; then
tar -czf "$UPLOADS_BACKUP_FILE" -C "$PROJECT_PATH" uploads 2>/dev/null
if [ $? -eq 0 ]; then
log "Папка uploads успешно сохранена: $UPLOADS_BACKUP_FILE"
else
warning "Не удалось создать резервную копию папки uploads"
fi
else
warning "Папка uploads не найдена"
fi
# 5. Создаем информационный файл о бэкапе
INFO_FILE="$BACKUP_DIR/backup_info_$DATE.txt"
cat > "$INFO_FILE" << EOF
Резервная копия проекта ERV
============================
Дата создания: $(date)
Версия скрипта: 1.0
Автор: Фёдор
Созданные файлы:
- База данных: ${DB_BACKUP_FILE}.gz
- Файлы проекта: $FILES_BACKUP_FILE
- Папка cache: $CACHE_BACKUP_FILE
- Папка uploads: $UPLOADS_BACKUP_FILE
Размеры файлов:
$(du -h "$BACKUP_DIR"/*$DATE* 2>/dev/null)
Системная информация:
- ОС: $(uname -a)
- Диск: $(df -h "$BACKUP_DIR" | tail -1)
- Память: $(free -h | grep Mem)
EOF
log "Информационный файл создан: $INFO_FILE"
# 6. Очистка старых бэкапов (старше 30 дней)
log "Очищаем старые резервные копии (старше 30 дней)..."
find "$BACKUP_DIR" -name "erv_*" -type f -mtime +30 -delete 2>/dev/null
log "Старые резервные копии удалены"
# 7. Проверяем размеры созданных файлов
log "Проверяем размеры созданных файлов..."
ls -lh "$BACKUP_DIR"/*$DATE* 2>/dev/null
# 8. Итоговая статистика
TOTAL_SIZE=$(du -sh "$BACKUP_DIR"/*$DATE* 2>/dev/null | awk '{sum+=$1} END {print sum "K"}')
echo ""
log "=== РЕЗЕРВНОЕ КОПИРОВАНИЕ ЗАВЕРШЕНО ==="
log "Общий размер резервных копий: $TOTAL_SIZE"
log "Все файлы сохранены в: $BACKUP_DIR"
echo ""
# Проверяем доступность внешних сервисов
log "Проверяем доступность внешних сервисов..."
# Проверка SMS API
if curl -s --connect-timeout 5 https://online.sigmasms.ru/api/ > /dev/null; then
log "SMS API (SigmaSMS) доступен"
else
warning "SMS API (SigmaSMS) недоступен"
fi
# Проверка DaData API
if curl -s --connect-timeout 5 https://suggestions.dadata.ru/ > /dev/null; then
log "DaData API доступен"
else
warning "DaData API недоступен"
fi
# Проверка CRM API
if curl -s --connect-timeout 5 https://form.clientright.ru/ > /dev/null; then
log "CRM API (ClientRight) доступен"
else
warning "CRM API (ClientRight) недоступен"
fi
echo ""
log "Резервное копирование завершено успешно!"
echo ""
# Отправляем уведомление (если настроено)
if [ -f "/usr/bin/mail" ]; then
echo "Резервное копирование ERV завершено успешно. Дата: $(date)" | mail -s "ERV Backup Complete" admin@clientright.ru 2>/dev/null
fi
exit 0