#!/usr/bin/env ruby # frozen_string_literal: true require_relative 'drones/lib/dasu_executor' puts "=== LIMPIEZA DE BACKUPS EN DASU-SQL4 ===" puts "Fecha: #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}" puts "" ps_script = <<~PSCMD.strip $ErrorActionPreference = "Stop" $JSON_PATH = "C:\\temp\\limpieza_output.json" $null = New-Item -ItemType Directory -Force -Path "C:\\temp" # Listar todos los backups $backups = Get-ChildItem "F:\\BACKUP\\sysdasuten*.bak" | Sort-Object LastWriteTime -Descending Write-Host "=== ANTES DE LIMPIEZA ===" Write-Host "Total archivos: $($backups.Count)" $totalSize = ($backups | Measure-Object -Property Length -Sum).Sum / 1MB Write-Host "Total tamaño: $([math]::Round($totalSize, 2)) MB" Write-Host "`nArchivos:" $backups | ForEach-Object { $sizeMB = [math]::Round($_.Length / 1MB, 2) Write-Host " $($_.Name) - ${sizeMB} MB - $($_.LastWriteTime)" } # Mantener solo el más reciente if ($backups.Count -gt 1) { $aEliminar = $backups | Select-Object -Skip 1 Write-Host "`n=== ELIMINANDO $($aEliminar.Count) ARCHIVOS ===" $aEliminar | ForEach-Object { Write-Host " Eliminando: $($_.Name)..." Remove-Item $_.FullName -Force } # Verificar resultado $restantes = Get-ChildItem "F:\\BACKUP\\sysdasuten*.bak" | Sort-Object LastWriteTime -Descending Write-Host "`n=== DESPUÉS DE LIMPIEZA ===" Write-Host "Total archivos: $($restantes.Count)" $totalSize = ($restantes | Measure-Object -Property Length -Sum).Sum / 1MB Write-Host "Total tamaño: $([math]::Round($totalSize, 2)) MB" $restantes | ForEach-Object { $sizeMB = [math]::Round($_.Length / 1MB, 2) Write-Host " $($_.Name) - ${sizeMB} MB - $($_.LastWriteTime)" } $resultado = @{ eliminados = $aEliminar.Count restantes = $restantes.Count espacio_libre_mb = [math]::Round($totalSize, 2) timestamp = (Get-Date -Format "o") } } else { Write-Host "`n=== NO HAY NADA QUE ELIMINAR ===" $resultado = @{ eliminados = 0 restantes = $backups.Count timestamp = (Get-Date -Format "o") } } $resultado | ConvertTo-Json | Out-File -FilePath $JSON_PATH -Encoding utf8 PSCMD DasuExecutor.execute_ps_on_dasu(ps_script, output_path: 'C:\temp\limpieza_output.json') resultado = DasuExecutor.read_json_from_dasu('C:\temp\limpieza_output.json') puts "\n=== RESUMEN ===" puts " Archivos eliminados: #{resultado['eliminados']}" puts " Archivos restantes: #{resultado['restantes']}" puts " Espacio usado: #{resultado['espacio_libre_mb']} MB" if resultado['espacio_libre_mb'] puts "\n✅ Limpieza completada"