- 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.
196 lines
6.9 KiB
Bash
196 lines
6.9 KiB
Bash
#!/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
|