79 lines
2.6 KiB
Ruby
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"
|