0, 'backups_to_delete' => 0, 'backups_size' => 0, 'logs_found' => 0, 'logs_to_clean' => 0, 'logs_size' => 0, 'total_freed' => 0 ]; // 1. Обработка бэкапов SQL echo "1. ОБРАБОТКА БЭКАПОВ SQL\n"; echo str_repeat("-", 80) . "\n"; $backupDir = __DIR__; $backups = glob($backupDir . '/backup_before_migration_*.sql'); if (empty($backups)) { echo " Бэкапы не найдены\n\n"; } else { $stats['backups_found'] = count($backups); // Сортируем по дате изменения (новые первыми) usort($backups, function($a, $b) { return filemtime($b) - filemtime($a); }); echo " Найдено бэкапов: {$stats['backups_found']}\n"; echo " Оставим последних: {$keepBackups}\n"; echo " Будет удалено: " . max(0, $stats['backups_found'] - $keepBackups) . "\n\n"; $toDelete = array_slice($backups, $keepBackups); $stats['backups_to_delete'] = count($toDelete); if (!empty($toDelete)) { echo " Файлы для удаления:\n"; foreach ($toDelete as $backup) { $size = filesize($backup); $stats['backups_size'] += $size; $sizeMB = round($size / 1024 / 1024, 2); $date = date('Y-m-d H:i:s', filemtime($backup)); echo " - " . basename($backup) . " ({$sizeMB}MB, {$date})\n"; } if ($dryRun && !empty($toDelete)) { echo "\n Удаление файлов...\n"; foreach ($toDelete as $backup) { if (unlink($backup)) { echo " ✅ " . basename($backup) . " - удален\n"; } else { echo " ❌ " . basename($backup) . " - ошибка удаления\n"; } } } echo "\n"; } else { echo " Нет файлов для удаления\n\n"; } } // 2. Обработка больших логов echo "2. ОБРАБОТКА ЛОГОВ\n"; echo str_repeat("-", 80) . "\n"; $largeLogs = [ __DIR__ . '/wdall.log', __DIR__ . '/wdall2.log', __DIR__ . '/wa_inbound.log', __DIR__ . '/wa_outbound.log', ]; foreach ($largeLogs as $logFile) { if (file_exists($logFile)) { $size = filesize($logFile); $sizeMB = round($size / 1024 / 1024, 2); if ($size > 10 * 1024 * 1024) { // Больше 10MB $stats['logs_found']++; $stats['logs_size'] += $size; echo " Найден большой лог: " . basename($logFile) . " ({$sizeMB}MB)\n"; if ($dryRun) { // Очищаем лог (оставляем последние 1000 строк) $lines = file($logFile); if (count($lines) > 1000) { $keepLines = array_slice($lines, -1000); if (file_put_contents($logFile, implode('', $keepLines))) { $newSize = filesize($logFile); $freedMB = round(($size - $newSize) / 1024 / 1024, 2); echo " ✅ Очищен (освобождено {$freedMB}MB)\n"; $stats['logs_to_clean']++; } else { echo " ❌ Ошибка очистки\n"; } } else { echo " ℹ️ Лог небольшой, пропущен\n"; } } else { echo " ⏸️ Будет очищен (dry-run)\n"; $stats['logs_to_clean']++; } } } } // Обработка логов в папке logs/ $logsDir = __DIR__ . '/logs'; if (is_dir($logsDir)) { $logFiles = glob($logsDir . '/*.log*'); foreach ($logFiles as $logFile) { $size = filesize($logFile); if ($size > 20 * 1024 * 1024) { // Больше 20MB $sizeMB = round($size / 1024 / 1024, 2); $mtime = filemtime($logFile); $daysOld = (time() - $mtime) / 86400; if ($daysOld > 7) { $stats['logs_found']++; $stats['logs_size'] += $size; echo " Старый большой лог: " . basename($logFile) . " ({$sizeMB}MB, " . round($daysOld) . " дней)\n"; if ($dryRun) { if (unlink($logFile)) { echo " ✅ Удален\n"; $stats['logs_to_clean']++; } else { echo " ❌ Ошибка удаления\n"; } } else { echo " ⏸️ Будет удален (dry-run)\n"; $stats['logs_to_clean']++; } } } } } echo "\n"; // Итоговая статистика $stats['total_freed'] = $stats['backups_size'] + $stats['logs_size']; $totalFreedMB = round($stats['total_freed'] / 1024 / 1024, 2); $totalFreedGB = round($stats['total_freed'] / 1024 / 1024 / 1024, 2); echo str_repeat("=", 80) . "\n"; echo "ИТОГОВАЯ СТАТИСТИКА:\n\n"; echo "Бэкапы:\n"; echo " - Найдено: {$stats['backups_found']}\n"; echo " - Будет удалено: {$stats['backups_to_delete']}\n"; echo " - Размер: " . round($stats['backups_size'] / 1024 / 1024 / 1024, 2) . "GB\n\n"; echo "Логи:\n"; echo " - Найдено больших: {$stats['logs_found']}\n"; echo " - Будет обработано: {$stats['logs_to_clean']}\n"; echo " - Размер: " . round($stats['logs_size'] / 1024 / 1024, 2) . "MB\n\n"; echo "ОБЩЕЕ ОСВОБОЖДЕНИЕ: {$totalFreedGB}GB ({$totalFreedMB}MB)\n\n"; if (!$dryRun) { echo "⚠️ Это был режим проверки. Для реального удаления запустите:\n"; echo " php cleanup_disk.php --execute {$keepBackups}\n\n"; } else { echo "✅ Очистка завершена!\n\n"; }