Files
dtic-DIIAA/adn/tools/cli/limpiar_backups_dasu.rb
T

79 lines
2.6 KiB
Ruby

#!/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"