✨ Features: - Migrated ALL files to new S3 structure (Projects, Contacts, Accounts, HelpDesk, Invoice, etc.) - Added Nextcloud folder buttons to ALL modules - Fixed Nextcloud editor integration - WebSocket server for real-time updates - Redis Pub/Sub integration - File path manager for organized storage - Redis caching for performance (Functions.php) 📁 New Structure: Documents/Project/ProjectName_ID/file_docID.ext Documents/Contacts/FirstName_LastName_ID/file_docID.ext Documents/Accounts/AccountName_ID/file_docID.ext 🔧 Technical: - FilePathManager for standardized paths - S3StorageService integration - WebSocket server (Node.js + Docker) - Redis cache for getBasicModuleInfo() - Predis library for Redis connectivity 📝 Scripts: - Migration scripts for all modules - Test pages for WebSocket/SSE/Polling - Documentation (MIGRATION_*.md, REDIS_*.md) 🎯 Result: 15,000+ files migrated successfully!
105 lines
3.5 KiB
Bash
Executable File
105 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
||
# Пакетная миграция проектов по статусу
|
||
|
||
# Цвета для вывода
|
||
GREEN='\033[0;32m'
|
||
RED='\033[0;31m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Параметры
|
||
STATUS="${1:-completed}"
|
||
BATCH_SIZE="${2:-50}"
|
||
DRY_RUN="${3:-false}"
|
||
|
||
echo "🚀 === ПАКЕТНАЯ МИГРАЦИЯ ПРОЕКТОВ ==="
|
||
echo ""
|
||
echo "📊 Параметры:"
|
||
echo " • Статус: $STATUS"
|
||
echo " • Размер пакета: $BATCH_SIZE проектов"
|
||
echo " • Dry-run: $DRY_RUN"
|
||
echo ""
|
||
|
||
# Получаем список проектов для миграции
|
||
PROJECT_LIST=$(mysql -u ci20465_72new -pEcY979Rn ci20465_72new -N -e "
|
||
SELECT DISTINCT p.projectid
|
||
FROM vtiger_project p
|
||
INNER JOIN vtiger_senotesrel sr ON p.projectid = sr.crmid
|
||
INNER JOIN vtiger_notes n ON sr.notesid = n.notesid
|
||
WHERE n.filestatus = 1
|
||
AND p.projectstatus = '$STATUS'
|
||
ORDER BY p.projectid
|
||
LIMIT $BATCH_SIZE;
|
||
" 2>/dev/null)
|
||
|
||
if [ -z "$PROJECT_LIST" ]; then
|
||
echo -e "${RED}❌ Нет проектов для миграции!${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# Подсчитываем количество проектов
|
||
PROJECT_COUNT=$(echo "$PROJECT_LIST" | wc -l)
|
||
echo -e "${GREEN}✅ Найдено проектов для миграции: $PROJECT_COUNT${NC}"
|
||
echo ""
|
||
|
||
# Счётчики
|
||
CURRENT=0
|
||
SUCCESS=0
|
||
FAILED=0
|
||
|
||
# Создаём файл для статистики
|
||
STATS_FILE="/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/logs/batch_stats_$(date +%Y%m%d_%H%M%S).txt"
|
||
echo "Batch Migration Statistics" > "$STATS_FILE"
|
||
echo "Status: $STATUS" >> "$STATS_FILE"
|
||
echo "Started: $(date)" >> "$STATS_FILE"
|
||
echo "" >> "$STATS_FILE"
|
||
|
||
# Мигрируем каждый проект
|
||
for PROJECT_ID in $PROJECT_LIST; do
|
||
CURRENT=$((CURRENT + 1))
|
||
echo -e "${YELLOW}[$CURRENT/$PROJECT_COUNT]${NC} Мигрируем проект $PROJECT_ID..."
|
||
|
||
# Запускаем миграцию
|
||
if [ "$DRY_RUN" = "true" ]; then
|
||
RESULT=$(php /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/migrate_project_files.php --dry-run --project=$PROJECT_ID 2>&1)
|
||
else
|
||
RESULT=$(php /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/migrate_project_files.php --project=$PROJECT_ID 2>&1)
|
||
fi
|
||
|
||
# Проверяем результат
|
||
if echo "$RESULT" | grep -q "МИГРАЦИЯ ЗАВЕРШЕНА"; then
|
||
DOCS_SUCCESS=$(echo "$RESULT" | grep "Успешно:" | tail -1 | awk '{print $NF}')
|
||
DOCS_TOTAL=$(echo "$RESULT" | grep "Всего документов:" | tail -1 | awk '{print $NF}')
|
||
echo -e " ${GREEN}✅ Успешно: $DOCS_SUCCESS/$DOCS_TOTAL документов${NC}"
|
||
SUCCESS=$((SUCCESS + 1))
|
||
echo "$PROJECT_ID: SUCCESS ($DOCS_SUCCESS/$DOCS_TOTAL)" >> "$STATS_FILE"
|
||
else
|
||
echo -e " ${RED}❌ Ошибка миграции${NC}"
|
||
FAILED=$((FAILED + 1))
|
||
echo "$PROJECT_ID: FAILED" >> "$STATS_FILE"
|
||
fi
|
||
|
||
# Небольшая пауза между проектами
|
||
sleep 1
|
||
done
|
||
|
||
echo ""
|
||
echo "📊 === ИТОГОВАЯ СТАТИСТИКА ==="
|
||
echo -e "${GREEN}✅ Успешно: $SUCCESS проектов${NC}"
|
||
echo -e "${RED}❌ Ошибок: $FAILED проектов${NC}"
|
||
echo ""
|
||
echo "📝 Детальная статистика: $STATS_FILE"
|
||
|
||
# Записываем итоги
|
||
echo "" >> "$STATS_FILE"
|
||
echo "Finished: $(date)" >> "$STATS_FILE"
|
||
echo "Success: $SUCCESS" >> "$STATS_FILE"
|
||
echo "Failed: $FAILED" >> "$STATS_FILE"
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|