Como fazer o backup do arquivo do servidor e manter as últimas n versões?

1

Estou tentando criar um script em lote para fazer backup de um Access Db de um servidor NAS para outro servidor e manter as últimas "n" versões desse arquivo (n é corrigido dentro do script), esse script será executado duas vezes por dia

O problema agora é que quando copio o arquivo robocopy não atualiza a data modificada e por causa disso forfiles não pode detectar os últimos dias

O outro problema é que eu preciso manter os últimos n arquivos, mas forfiles apenas apaga depois de n dias, existe uma maneira de conseguir isso?

Aqui está o meu script até agora:

@echo off

set numver=20
set datetime=%date:~-2%%date:~3,2%%date:~0,2%t%time:~0,2%%time:~3,2%
set filename=scep2012.mdb
set origin=\supercepsrv\supercep
set destin=C:\Teknia Shares\Respaldos\Sistemas\SuperCEP

robocopy "%origin%" "%destin%" %filename% /r:0 /w:2
ren "%destin%\%filename%" "%datetime%_%filename%"
forfiles -p "%destin%" /s /m *.* /d %numver% /c "cmd /c del @path"

:end
    
por Chico3001 23.02.2018 / 22:21

1 resposta

0

Esqueça os dias desde que você estará executando o script um número fixo de vezes por dia. Basta ter os arquivos numerados para alcançar algo como abaixo. O carimbo modificado da data de cada arquivo será uma indicação de quando o backup foi feito.

  • Compartilhamentos C: \ Teknia \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb (backup mais recente)
  • Compartilhamentos C: \ Teknia \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.1
  • Compartilhamentos C: \ Teknia \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.2
  • Compartilhamentos C: \ Teknia \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.3
  • Compartilhamentos C: \ Teknia \ Respaldos \ Sistemas \ SuperCEP \ scep2012.mdb.4 (backup mais antigo)

então, no seu script,

if EXIST "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb" (
  del "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.4"
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.3" scep2012.mdb.4
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.2" scep2012.mdb.3
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb.1" scep2012.mdb.2
  ren "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb"   scep2012.mdb.1
)

então sua linha de robocopy.

Se houver muitos deles, você poderá fazer um loop for. No entanto, você pode querer considerar a mudança para usar o PowerShell para fazer uso de seus recursos mais avançados. Antes que o arquivo em lote se torne muito arraigado em seu processo e a mudança posterior se torne muito mais difícil.

Observe que, antes de executar este script pela primeira vez, já deve existir um arquivo chamado "C:\Teknia Shares\Respaldos\Sistemas\SuperCEP\scep2012.mdb"

    
por 24.02.2018 / 03:38