Automatizando compactação por prompt no Windows Server

Hoje em dia é comum a automatização de procedimentos em servidores, tais como o famoso backup de arquivos. Recentemente implementei um script para realizar cópias de arquivos e diretórios que possuam alguma importância em meu servidor de aplicação. Bom a tarefa de copiar os arquivos e diretórios disponibilizei em um outro artigo que pode ser visto clicando aqui.

Como faremos o cenário?, consideramos que o script de backup já foi implementado e que o WINRAR já esta instalado no servidor que esta fazendo o backup.

Tudo que foi realizado no backup consideramos que esta no diretório C:\BACKUP\.

Então abra um bloco de notas e salve o arquivo como backup.bat

e insira o seguinte comando:

“C:\Arquivos de programas\WinRAR\Rar.exe” A -agDD-MM-YYYY -r C:\BACKUP\Backup_Teste_ @”C:\Scripts\Lista-Compactar.lst”

Salve e feche o arquivo.

Agora vamos entender a sintaxe:

“C:\Arquivos de programas\WinRAR\Rar.exe” -> esta indicando o caminho do executável do WinRAR
A> é um parâmetro de ação que adiciona arquivos para o arquivo compactado
-agDD-MM-YYYY -> é uma opção para inserir no final do nome do arquivo Rar a data que no meu exemplo ficaria assim Backup_Teste_16-06-15.rar
-r -> retorna os subdiretórios
C:\BACKUP\Backup_Teste_ -> indica o nome do arquivo compactado em seu destino que deseja que neste exemplo o Backup_Teste_16-06-15.rar  ficará dentro do diretório C -> Backup.

e por fim

@”C:\Scripts\Lista-Compactar.lst” -> é uma variável bacana que faremos, é a indicação de uma lista de extensões que dizemos para que seja compactado. Pensamos o seguinte vc coloca esse script para rodar diariamente e se não conter esta lista todo santo dia ele ira compactar tudo que esta no diretório C:\BACKUP e todos os dias terá um arquivo rar a mais e por exemplo ao executar no dia 16 o rar ele ira adicionar todos os rar que estão neste diretório e não queremos isso, apenas que compacte tudo que esta em C:\BACKUP menos os come extensão rar.

Então vamos preparar nossa lista

Abra o bloco de notas e salve como Lista-Compactar.lst e insira as extensões que deseja compactar e os diretórios.  Eu salvei o arquivo no seguinte diretório: C:\Scripts\, para mostrar no comando que quando o lst não se encontra no mesmo diretório do bat vc deve colocar em aspas e identificar o caminho completo.

no meu caso eu coloquei o que precisava e ficou assim:

C:\BACKUP\*.fdb
C:\BACKUP\*.log
C:\BACKUP\Simatex

Arquivo lst

Arquivo lst

Salve e feche o arquivo.

E para manter limpo o nosso diretório do BACKUP colocamos em nosso backup.bat abaixo do comando do WinRar as seguintes linhas:

del /s C:\BACKUP\*.fdb
del /s C:\BACKUP\*.log
rd /S /Q C:\BACKUP\Simatex

Para apagar todos os arquivos com extensões .fdb e .log e remover o diretório Simatex.

Vale ressaltar que o parâmetro /S usado no rd é para deletar todas as pastas e arquivos da pasta indicada e o /Q é um modo silencioso para não pedir a confirmação para remover a árvore de pastas indicada na linha.

Parâmetros do comando rd

Parâmetros do comando rd

O arquivo final ficaria assim:

Script para compactar arquivos e diretórios com RAR

Script para compactar arquivos e diretórios com RAR

Após terminarmos nosso script vamos inserir essa rotina diariamente, em meu caso aqui eu fiz o passo a passo no Windows Server 2003.

Abra o Assistente de tarefa agendada através do seguinte caminho: Iniciar -> Programas -> AcessóriosFerramentas do Sistema -> Tarefas Agendadas

Caminho para abrir o Assistente de Tarefas Agendadas do Windows

Caminho para abrir o Assistente de Tarefas Agendadas do Windows

Abrira o explorer de Tarefas Agendadas e clique em “Adicionar tarefa agendada”, após isso ira iniciar o Assistente e clique em “Avançar”.

Iniciando o Assistente de Tarefas Agendadas

Iniciando o Assistente de Tarefas Agendadas

 

Na próxima janela do assistente clique em “Procurar” e abrira a opção para que seja selecionado o arquivo a agendar que em nosso caso é o Backup.bat que esta em C:\Backup, selecione o .bat e clique em abrir.

Selecionando o Script .bat

Selecionando o Script .bat

 

Agora escolha a opção que mais atende sua necessidade, em nosso caso iremos optar por executar a tarefa diariamente, mas também pode ser executada semanalmente, mensalmente, somente uma vez, ao iniciar o computador e ao fazer logon. E clique em “Avançar”.

Escolhendo a opção para execução da tarefa

Escolhendo a opção para execução da tarefa

 

Após avançar será possível escolher a hora de início, e se executará a tarefa todos os dias, durante a semana ou intervalos de dias, e escolher a data que terá inicio a execução.

Escolheremos então executar como exemplo optamos para executar a 0h02, todos os dias e iniciar a partir do dia 16/6/2015. e clique em “Avançar”.

c

Frequência da execução

E por fim será mostrado um resumo das ações. Clique em “Concluir” e esta finalizado o assistente.

Conclusão do Assistente

Conclusão do Assistente

 

Bom espero poder ter ajudado..

 

Gde Abç

 

13 Comments

  1. Juscelino

    Perfeito Fernando. Que tutorial fantástico, claro e completo. Parabéns

    Reply
    1. Fernando Oliveira (Post author)

      Boa tarde Juscelino, tudo jóia?
      Obrigado mesmo, se eu consegui te ajudar, então valeu a pena fazer o tutorial e deixar aqui no meu blog.
      Este passo a passo me ajudou muito em um servidor que tinha que gerenciar o backup sendo Windows Server, para outro Windows Server e ainda mandar este backup para uma máquina linux, tudo se comunicando com chave.
      Obrigado pelo acesso no site.
      gde abç

      Reply
  2. Leandro

    Olá, gostaria de tirar uma dúvida.

    No arquivo Lista-Compactar.lst – você lista as exatas pastas que deseja compactar.
    E se por ventura eu tiver pastas como:
    Setor1 2016-12-01
    Setor1 2016-12-02

    Setor2 2016-12-01
    Setor2 2016-12-02

    E eu necessitar inserir o parâmetro de data também nessa lista.
    Existe como? Ou somente apontando a exata pasta?

    Reply
    1. Fernando Oliveira (Post author)

      Boa tarde Leandro, desculpe a demora.

      Leandro o uso de variáveis é mais conhecido no mundo Linux, então por não encontrar muitos manuais a respeito eu utilizei o endereço das pastas exatas, e ai criei uma bat que copiava aquela pasta para meu diretório de backups mensais.
      Para variar era linux, então lá tinha um script que criava a pasta do dia, e fazia essa organização.

      Tem um post que publiquei como copiar de um lado para o outro usando chave, bem bacana, tanto para linux quanto para windows.

      Como o parque era bem diversificado acabava meio que uma orquestra tudo agendado e viviam arquivos circulando para um lado e para o outro pela madrugada a fora.

      gde abç

      Reply
  3. Gerson Amaral

    Com esse mesmo comando , para compactar com a senha no .rar

    Reply
  4. Fernando Oliveira (Post author)

    Olá Gerson, obrigado pela visita no blog.
    Não entendi, vc conseguiu usar esta função compactando com senha o arquivo .rar??

    gde abç

    Reply
  5. Leonardo

    Parabéns pelo tutorial Fernando.

    Eu consigo adicionar arquivos em um arquivo já compactado via bat?

    Reply
  6. Fernando Oliveira (Post author)

    Bom dia Leonardo tudo bem ?

    Olha não tentei ainda, porém acredito que seja possível sim, da uma ohada no help do rar no prompt, pois ele é uma ferramenta muito bacana.

    Vou colocar na minha lista de itens para os próximos artigos, estou voltando a trabalhar com infra, então volto a ter recursos para continuar a publicar mais soluções.

    gde abç

    Reply
  7. Elias

    Fernando, excelente tutorial, mas tenho uma dúvida, quando executo o comando Rar.exe> a “C:\Teste\Salvar.rar” “C:\Teste\compactar\compactaresse.txt” eu acabo compactando todas as pastas do diretorio até chegar no “compactaresse.txt”. Quero compactar somente o arquivo .txt, tem alguma sugestão?

    Reply
  8. Zamboni

    Boa tarde Fernando,

    Parabéns pelo Blog.

    Estou com uma dúvida, referente ao comando @”C:\Scripts\Lista-Compactar.lst”, vou explicar minha necessidade.

    Tenho um computador Windows com alguns filmes e preciso fazer backup desse conteúdo em outro HD periodicamente, montei um script que faz isso sem problema o problema é que quando entra novos filmes tenho que ir no script e adicionar uma linha nova, segue o script abaixo.

    @Echo off
    cd “c:\program Files\Winrar”

    set Source=”F:\2.Filmes\nome_do_filme”
    set Destination=”E:\2.Filmes\nome_do_filme.rar”

    RAR a -ad -df -dr -ed -isnd -t -ep1 -v4g -m4 -hpsenha_do_arquivo %Destination% %source%

    Queria saber se é possível o rar ler os nomes de um lista.txt com o comando @”F:\2.Filmes\nome_do_filme.txt” e ignorar os filmes que já estão no destino e fazer apenas dos novos filmes com os respectivos nomes (nome_do_filme.rar)

    Agradeço a ajuda.

    Reply
    1. Zamboni

      ignore o -df e -dr que exclui o arquivo após compactacao usei eles quando ia formatar esse HD.

      Reply
  9. Fabio Moreira

    Bom dia amigos do site. Estou tentando fazer um arquivo .bat mas não está dando certo, estou tentado fazer um backup compactado de uma pasta no arquivos de programas (x86) mas ao executar o arquivo dá no WinRar “acesso negado”, creio que seja algo com permissões na pasta arquivos de programas pois se eu copiar a pasta de origem para a área de trabalho e editar o .bat partindo da origem da área de trabalho, funciona. O comando está sendo:

    “C:\Program Files\WinRAR\WINRAR.EXE” a -r -agDD-MM-YYYY-HH:MM:SS C:\Users\Paulo\Documents\Fabio-Paulo\Backup Balanças\Backup Pasta MGV6\MGV6_ C:\Program Files (x86)\Toledo do Brasil\MGV6\*.*

    E desde já estou agradecendo a ajuda daqueles que me ajudarem, muito obrigado.

    Reply
  10. wellington

    Olá, dentro de um diretório temos 4 arquivos, eu queria que na pasta de destino sai-se cada arquivo compactado ex file1.rar, file2.rar, file3.rar, file4.rar sem o diretório. É possível isto?

    Reply

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *