Caroline… Carolzinha… ou simplesmente Carol!

Comece pelo simples e não pare de tentar.

Para aqueles que precisam utilizar frequentemente o Robocopy para copiar dados entre ambientes, fica inviável ter que conferir constantemente os logs e corrigir possíveis erros. E como tratar esses logs e arquivá-los?

Resolvi automatizar esse processo numa das empresas que trabalhei, através de um script em PowerShell.

Obs.: Estou tratando o erro mais comum que é o de conexão, mas podemos tratar outros também.

Primeiramente o script procura pelo erro e envia por e-mail para o suporte caso encontre.
O segundo passo é tratar os logs, comprimindo e renomeando com suas respectivas datas.
E por fim, basta configurar no agendador de tarefas do Windows ou qualquer solução que você possua para executar suas tasks.

Start-Transcript -path “D:\Logs\valida_robocopy.log”

Write-Output “Executado em $(Get-Date -format g)”

############### Verifica os logs do ROBOCOPY (Server1) ###############

$erro = “ERROR: RETRY LIMIT EXCEEDED”

$result = Get-ChildItem -path “C:\Users\Administrador\Desktop\Log_Robocopy\*.txt” | Select-String $erro | Select-Object -unique Filename | Format-Table -HideTableHeaders
echo $result

if ($result -eq $null)
{
echo Sem erro na rotina
}
else
{
Send-MailMessage -to “suporte@meu_dominio.com.br” -From “server@meu_dominio.com.br” -Subject “Erro no rotina do ROBOCOPY (Server1) entre a origem e o destino.” -body “$erro. Favor verificar.” -SmtpServer 127.0.0.1

echo Erro na rotina do ROBOCOPY: $erro. Um e-mail de alerta foi enviado.
}

############### Compressão dos logs para controle de evidência. ###############

if (-not (test-path “$env:ProgramFiles\7-Zip\7z.exe”)) {throw “$env:ProgramFiles\7-Zip\7z.exe needed”}
set-alias sz “$env:ProgramFiles\7-Zip\7z.exe”

$timestamp = get-date -f yyyyMMdd

$source = “C:\Users\Administrador\Desktop\Log_Robocopy\*.txt”
$target = “D:\$(Get-Date -UFormat “%Y”)\$(Get-Date -UFormat “%m”)”

If (!(Test-Path $target))
{
mkdir “D:\Evidencia Backups\Robocopy\$(Get-Date -UFormat “%Y”)\$(Get-Date -UFormat “%m”)”
}

sz a -mx=9 $target\$timestamp.zip $source

Stop-Transcript

Categorias: Divulgação, PowerShell

Sobre Carol Souza

Caroline de Souza Vieira, mais conhecida como Carol Souza, formada em Análise de Sistemas, administradora de redes Linux, incentivadora do uso de Software Livre e usuária OpenSuse. Membro atuante da Comunidade Software Livre no Rio de Janeiro, colaboradora voluntária de eventos como Hack’n Rio 2011, IV FSLDC e DFDRJ, blogueira em sites como Cotidiano Linux, Gmigos, Mulheres na Tecnologia e CooperaTI além de manter o próprio blog Carolinux. Sonhadora, amiga, determinada, criativa e movida à desafios. Uma “padawan” amante de tecnologia, aspirante a corredora, ritmista e blogueira.

Posts Populares

Remote Desktop via W

Recentemente precisei usar o Remote Desktop do Windows para acessar ...

Extraindo textos a p

Realizando um atendimento (quem lê até pensa que sou médica ...

À caça de um Malwa

Escrevendo novos posts até tarde da noite, divulgando e acompanhando ...

Erro no "apt-get upd

Essa é mais uma daquelas histórias em que a simples ...

Mulheres em moviment

Neste último domingo consegui realizar um grande desejo, participar de ...