User Tools

Site Tools


copiar_renombrar_borrar_copias_notificar

This is an old revision of the document!


Esto copia un .bak a una ubicación de red, renombra el archivo con la fecha de hoy, borra copias viejas y para determinado día de la semana, guarda una copia en otra ubicación. Finalmente envía el resultado por correo.

$src = "C:\Veeam\Backup\SqlLogBackup\Sting_prod.bak"
$srcDir = "C:\Veeam\Backup\SqlLogBackup"
$dst = "\\bccsrv12\07-BackupsAdicionales\STING_PRD_DailyBackup"
$wDst = "\\bccsrv12\07-BackupsAdicionales\STING_PRD_wBackup"
$logfile = "\\bccsrv12\07-BackupsAdicionales\STING_PRD_DailyBackup\log.txt" 
 
 
function Send-ToEmail([string]$email, [string]$body){
 
    $message = new-object Net.Mail.MailMessage;
    $message.From = "[email protected]";
    $message.To.Add($email);
    $message.Subject = "Backup adicional de la base STING_PRD - $((Get-Date).ToString('dd/MM/yyyy'))";
    $message.Body = $body;
 
    $smtp = new-object Net.Mail.SmtpClient("smtp.bccba.org.ar", "25");
    $smtp.EnableSSL = $false;
 
    $smtp.send($message);
    #write-host "Mail Sent";
 }
 
 
echo 'creando nuevo registro para la ejecución actual. Borrando el log anterior y comenzando uno nuevo...' > $logfile
 
echo '_________________________' >> $logfile
Get-Date -Format 'dd/MM/yyyy-HH:mm' >> $logfile
echo '_________________________' >> $logfile
echo "Este script copia el archivo $src hacia la ubicación $dst" >> $logfile
 
cd $dst
echo '' >> $logfile
echo '' >> $logfile
echo 'Eliminando del destino backups anteriores a 5 días...' >> $logfile
forfiles /p . /s /m *.* /D -5 /C "cmd /c del @path"
 
echo '_________________________' >> $logfile
echo '' >> $logfile
echo 'listo. Copiando la base actualizada...' >> $logfile
xcopy /s /y $src . >> $logfile
echo '_________________________' >> $logfile
 
echo '' >> $logfile
echo '' >> $logfile
echo 'Listo... renombrando archivo de destino con la fecha actual' >> $logfile
Rename-Item -Path "$dst\Sting_prod.bak" -NewName "STING_PROD_$((Get-Date).ToString('yyyy-MM-dd')).bak"
 
if((get-date).DayOfWeek -Match 'Saturday'){
    echo '' >> $logfile
    echo '' >> $logfile
    echo "hoy es sábado, se guarda una copia en $wDst" >> $logfile
    xcopy /s /y "$dst\STING_PROD_$((Get-Date).ToString('yyyy-MM-dd')).bak" $wDst >> $logfile
}
 
echo '_________________________' >> $logfile
echo '' >> $logfile
echo '' >> $logfile
echo 'y eliminando el backup de hoy (Sting_prod.bak) del servidor local (bccsrv08)' >> $logfile
Remove-Item -path "$src" >> $logfile
 
$filecount = (Get-ChildItem $srcDir -File).Count
 
echo 'Listo' >> $logfile
echo '' >> $logfile
echo '_________________________' >> $logfile
echo "En $srcDir hay $filecount archivos. Tal vez quieran revisar si no sobra alguno." >> $logfile
echo '' >> $logfile
echo 'Enviando el resultado por correo.' >> $logfile
 
$bodyContent = Get-Content $logFile -Raw
 
Send-ToEmail  -email "[email protected]" -body $bodyContent
 
exit
copiar_renombrar_borrar_copias_notificar.1683675894.txt.gz · Last modified: 2024/10/17 21:42 (external edit)