6.2 KiB
6.2 KiB
n8n S3 Migration Clean API
Описание
Скрипт n8n_s3_migration_clean.php предназначен для автоматической миграции файлов из локального хранилища в S3 с выводом ТОЛЬКО чистого JSON без логов для максимально удобного парсинга в n8n.
Использование
Прямой вызов PHP
php n8n_s3_migration_clean.php [LIMIT] [DRY_RUN]
Через bash wrapper (рекомендуется)
./n8n_migration_clean.sh
Переменные окружения
LIMIT- количество файлов для обработки (по умолчанию: 20)DRY_RUN- режим тестирования без изменений (0/1, по умолчанию: 0)
Формат JSON ответа
Успешное выполнение
{"status":"success","timestamp":"2025-09-22 14:37:21","summary":{"total_processed":1,"successfully_migrated":1,"failed":0,"marked_problematic":0,"dry_run":false},"migrated_files":[{"notesid":393084,"filename":"Отказ_от_иска_по_делу__2-3265-2024_1_стр.pdf","s3_url":"https://s3.twcstorage.ru/...","s3_key":"crm2/CRM_Active_Files/Documents/393084/...","local_file_deleted":true}],"problematic_files":[],"exit_code":0}
Предупреждение (проблемные файлы)
{"status":"warning","timestamp":"2025-09-22 14:37:21","summary":{"total_processed":2,"successfully_migrated":1,"failed":0,"marked_problematic":1,"dry_run":false},"migrated_files":[{"notesid":393084,"filename":"file.pdf","s3_url":"https://s3.twcstorage.ru/...","s3_key":"crm2/CRM_Active_Files/Documents/393084/...","local_file_deleted":true}],"problematic_files":[{"notesid":393085,"original_filename":"problematic_file.pdf","problematic_filename":"[PROBLEM_2025-09-22_14-37-21] problematic_file.pdf","reason":"Physical file not found"}],"exit_code":1}
Частичная ошибка
{"status":"partial_error","timestamp":"2025-09-22 14:37:21","summary":{"total_processed":2,"successfully_migrated":1,"failed":1,"marked_problematic":0,"dry_run":false},"migrated_files":[{"notesid":393084,"filename":"file.pdf","s3_url":"https://s3.twcstorage.ru/...","s3_key":"crm2/CRM_Active_Files/Documents/393084/...","local_file_deleted":true}],"problematic_files":[],"exit_code":2}
Критическая ошибка
{"status":"error","timestamp":"2025-09-22 14:37:21","error":"Database connection failed: ...","exit_code":3}
Коды выхода
0- Успех1- Предупреждение (есть проблемные файлы)2- Частичная ошибка (есть неудачные миграции)3- Критическая ошибка (проблемы с БД или S3)
Поля ответа
summary
total_processed- общее количество обработанных файловsuccessfully_migrated- успешно мигрированныхfailed- неудачных миграцийmarked_problematic- помеченных как проблемныеdry_run- режим тестирования
migrated_files
Массив успешно мигрированных файлов:
notesid- ID записи в БДfilename- имя файлаs3_url- URL в S3 (только для реальной миграции)s3_key- ключ в S3 (только для реальной миграции)local_file_deleted- удален ли локальный файл (только для реальной миграции)local_file_path- путь к локальному файлу (только для dry_run)dry_run- режим тестирования (только для dry_run)
problematic_files
Массив проблемных файлов:
notesid- ID записи в БДoriginal_filename- оригинальное имя файлаproblematic_filename- новое имя с префиксом (только для реальной миграции)reason- причина проблемы
Интеграция с n8n
SSH Node
ssh user@server "/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/n8n_migration_clean.sh"
Парсинг JSON
// В n8n JavaScript Code
const result = JSON.parse($input.all()[0].json.stdout);
if (result.status === 'success') {
return {
success: true,
migrated: result.summary.successfully_migrated,
problematic: result.summary.marked_problematic
};
} else if (result.status === 'warning') {
return {
warning: true,
migrated: result.summary.successfully_migrated,
problematic: result.problematic_files
};
} else {
return {
error: true,
message: result.error || 'Unknown error'
};
}
Мониторинг
Логи
- Основной лог:
/var/www/fastuser/data/www/crm.clientright.ru/logs/n8n_s3_migration.log - Чистый лог:
/var/www/fastuser/data/www/crm.clientright.ru/logs/n8n_migration_clean.log
Cron задача
# Каждые 5 минут
*/5 * * * * /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/n8n_migration_clean.sh
Преимущества Clean версии
✅ Только чистый JSON - никаких логов в stdout
✅ Максимально удобный парсинг - один JSON объект
✅ Логи в отдельном файле - для отладки и мониторинга
✅ Совместимость с n8n - идеально для автоматизации
✅ Быстрый парсинг - минимум обработки данных
Безопасность
- Скрипт работает только с файлами типа 'I' (Internal)
- Исключает системные файлы (file_15_*, пустые имена)
- Помечает проблемные файлы вместо удаления записей
- Логирует все операции для аудита