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
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
O arquivo final ficaria assim:

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órios – Ferramentas do Sistema -> Tarefas Agendadas

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
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
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
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”.

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
Bom espero poder ter ajudado..
Gde Abç
Perfeito Fernando. Que tutorial fantástico, claro e completo. Parabéns
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ç
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?
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ç
Com esse mesmo comando , para compactar com a senha no .rar
Olá Gerson, obrigado pela visita no blog.
Não entendi, vc conseguiu usar esta função compactando com senha o arquivo .rar??
gde abç
Parabéns pelo tutorial Fernando.
Eu consigo adicionar arquivos em um arquivo já compactado via bat?
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ç
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?
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.
ignore o -df e -dr que exclui o arquivo após compactacao usei eles quando ia formatar esse HD.