6.3 KiB
6.3 KiB
🚀 Auto S3 Migration System
📋 Описание
Универсальная система автоматической миграции локальных файлов в S3. Работает с любыми файлами CRM: PDFMaker, загрузки пользователей, документы и т.д.
🔧 Компоненты системы
1. auto_migrate_to_s3.php - Основной скрипт миграции
- ✅ Находит новые локальные файлы (тип 'I', без S3 метаданных)
- ✅ Загружает их в S3
- ✅ Обновляет базу данных (S3 метаданные, тип 'E')
- ✅ Удаляет локальные файлы после успешной миграции
- ✅ Создает резервные копии перед изменениями
- ✅ Подробное логирование
2. run_auto_s3_migration.sh - Wrapper скрипт
- ✅ Удобный запуск с параметрами через переменные окружения
- ✅ Логирование времени выполнения
- ✅ Настройка приоритета процесса (nice/ionice)
3. trigger_s3_migration.php - Программный хук
- ✅ Функция
triggerS3Migration()для вызова из кода - ✅ Асинхронный и синхронный режимы
- ✅ Можно интегрировать в любые части CRM
🚀 Использование
Ручной запуск (тест)
# Dry-run режим (безопасно)
cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage
php auto_migrate_to_s3.php --limit=10 --age-minutes=60 --dry-run=1
# Реальная миграция
php auto_migrate_to_s3.php --limit=20 --age-minutes=30 --dry-run=0
Через wrapper скрипт
# Dry-run
DRY_RUN=1 AGE_MINUTES=10 LIMIT=5 ./run_auto_s3_migration.sh
# Реальная миграция
DRY_RUN=0 AGE_MINUTES=15 LIMIT=20 ./run_auto_s3_migration.sh
Программный вызов
// В любом месте кода CRM
include_once 'crm_extensions/file_storage/trigger_s3_migration.php';
// Запуск в фоне (рекомендуется)
triggerS3Migration(5, 10, true); // 5 минут, 10 файлов, асинхронно
// Синхронный запуск
$success = triggerS3Migration(2, 5, false);
⏰ Автоматизация через Cron
Рекомендуемая настройка:
# Каждые 5 минут - миграция файлов младше 10 минут
*/5 * * * * cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage && DRY_RUN=0 AGE_MINUTES=10 LIMIT=20 ./run_auto_s3_migration.sh >> /var/www/fastuser/data/www/crm.clientright.ru/logs/cron_s3_migration.log 2>&1
Для тестирования:
# Каждую минуту в dry-run режиме
* * * * * cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage && DRY_RUN=1 AGE_MINUTES=5 LIMIT=5 ./run_auto_s3_migration.sh >> /var/www/fastuser/data/www/crm.clientright.ru/logs/cron_s3_migration_test.log 2>&1
📊 Параметры
| Параметр | Описание | По умолчанию |
|---|---|---|
--limit |
Максимум файлов за раз | 50 |
--age-minutes |
Возраст файлов в минутах | 5 |
--dry-run |
Режим тестирования (0/1) | 0 (false) |
--force |
Принудительная миграция | 0 (false) |
📁 Логи и мониторинг
Основной лог:
tail -f /var/www/fastuser/data/www/crm.clientright.ru/logs/auto_s3_migration.log
Cron лог:
tail -f /var/www/fastuser/data/www/crm.clientright.ru/logs/cron_s3_migration.log
Резервные копии:
/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/backups/auto_migration/
✅ Преимущества решения
- 🛡️ Безопасность - Не трогает исходный код PDFMaker или других модулей
- 🔄 Универсальность - Работает с любыми файлами CRM
- ⚡ Гибкость - Можно запускать по расписанию, вручную или программно
- 📊 Мониторинг - Подробные логи и статистика
- 🔙 Откат - Резервные копии всех изменений
- 🎯 Точность - Фильтрация по времени создания файлов
🎯 Алгоритм работы
- Поиск файлов - находит локальные файлы (
filelocationtype='I', безs3_key) - Фильтрация - только недавно созданные файлы (параметр
age-minutes) - Поиск на диске - находит физический файл в структуре storage
- Загрузка в S3 - использует существующий
S3StorageService - Обновление БД - добавляет S3 метаданные, меняет тип на 'E'
- Очистка - удаляет локальный файл после успешной миграции
- Логирование - записывает все операции в лог
🚨 Безопасность
- ✅ Dry-run по умолчанию - безопасное тестирование
- ✅ Резервные копии - перед каждым изменением БД
- ✅ Проверка размера файла - сверка с БД
- ✅ Обработка ошибок - продолжает работу при сбоях
- ✅ Лимиты - ограничение количества файлов за раз
🔧 Настройка
- Установка cron задачи (рекомендуется)
- Мониторинг логов первые дни
- Настройка параметров под нагрузку системы
Система готова к использованию! 🎉