Como fazer o backup de seus arquivos com o Robocopy

Publicidade

O Robocopy (Robust File Copy) é uma poderosa ferramenta de linha de comando do Windows que permite copiar arquivos de forma rápida e confiável e pode ser usado, por exemplo, para fazer o backup de arquivos.

Nesse tutorial vamos mostrar como você pode utilizar o Robocopy para fazer o backup de seus arquivos de forma manual, com um script, assim como de forma totalmente automática, usando o agendador de tarefas.

Passo 1 – Comando de backup:

A primeira coisa que precisamos fazer é criar um script para executar o backup dos arquivos. Nesse script precisamos informar a pasta de origem, a pasta de destino e parâmetros para fazer o backup dos arquivos.

Exemplo de backup incremental:

Usando esse comando, ele copiará automaticamente os arquivos da origem para o destino e ao executar o comando uma segunda vez, ele irá copiar apenas os arquivos novos e modificados para a pasta de destino.

robocopy "C:\Origem" "D:\Destino" /E /COPYALL /Z /R:3 /W:10 /XO /NP

Exemplo de backup incremental com log:

Adicionando o parâmetro /LOG ele cria um arquivo de registro das operações realizadas. Você pode usar o parâmetro /LOG para criar um novo arquivo de log a cada execução ou /LOG+ para anexar ao log existente.

robocopy "C:\Origem" "D:\Destino" /E /COPYALL /Z /R:3 /W:10 /XO /LOG:C:\Temp\bkp.log

Exemplo de backup com espelhamento:

Na primeira opção, quando você deletar um arquivo na pasta de origem, ele irá copiar novamente o arquivo para a pasta. Para evitar que isso aconteça, você pode usar o parâmetro /PURGE para espelhar as pastas.

robocopy "C:\Pasta1" "D:\Pasta2" /E /COPYALL /Z /R:3 /W:10 /XO /NP /PURGE

Por fim, você pode usar o comando robocopy /? para ver o que significa cada parâmetro usado nos scripts acima, entretanto, para facilitar, segue abaixo uma pequena lista com a explicação dos parâmetros usados.

/E = Copia todos os subdiretórios, incluindo os vazios
/COPYALL = Copia todas as informações dos arquivos
/Z = Copia os arquivos no modo reiniciável
/R:3 = Repete a cópia três vezes em caso de falha
/W:10 = Espera 10 segundos entre as tentativas
/XO = Copia apenas os arquivos novos e modificados
/NP = Não exibe o percentual copiado na tela

Passo 2 – Script de backup:

Agora que você já conhece os comandos que podemos usar para fazer o backup automático de uma pasta usando o robocopy, basta você criar um arquivo de lote para executar o backup dos arquivos quando quiser.

1. Abra o bloco de notas e digite @ECHO OFF

2. Cole um dos comandos de backup acima e substitua os caminhos da pastas de origem e destino.

3. Em seguida clique no menu “Arquivo > Salvar”, selecione o local aonde deseja salvar o script, selecione “Todos os arquivos (*.*)” no campo “Tipo”, digite o nome do script com a extensão .bat e clique em “Salvar”.

4. Agora quando quiser realizar o backup, basta executar o arquivo .bat. Note que ele precisa ser executado como Administrador. Clique com o botão direito no arquivo .bat e selecione “Executar como Administrador”.

Passo 3 – Agendamento do backup automático:

Para realizar o backup automático dos arquivos, você pode criar uma tarefa agendada no Windows, que irá executar o script de tempos em tempos para realizar o backup dos arquivos.Veja como agendar uma tarefa:

1. Pesquise por Agendador de Tarefas no Menu Iniciar e abra a ferramenta.

2. Clique no menu “Ação > Criar Tarefa…” no Agendador de Tarefas.

3. Digite um nome para a tarefa e marque a opção “Executar com privilégios mais altos”.

4. Abra a guia “Disparadores” e clique em “Novo”.

5. Em seguida, selecione em “Iniciar a tarefa” uma condição para iniciar o backup. Por exemplo, você pode escolher a opção “Em um agendamento” e definir um horário para executar o backup uma vez por semana.

6. Abra a guia “Ações”, clique em “Novo” e selecione a ação “Iniciar um programa”.

7. Clique no botão “Procurar…” e selecione o arquivo de script que você criou.

8. Clique em “OK” para concluir a criação da tarefa agendada.

Pronto, o backup será feito automaticamente de acordo com o que foi configurado. Se você optou por criar arquivo de log, você pode abri-lo após o backup para verificar se os arquivos foram copiados com sucesso.

Publicidade

Comentários:

    • Sergio.
      Muito bom seu tutorial e atitude de criar os Sites para apoiar nós que sempre precisamos desse tipo de instrução.

      Parabéns!

      Responder
  1. Uma mão na roda, economia de tempo. Valeu!!!

    Responder
  2. Excelente dica para quem trabalha com backup via CMD, muito obrigado mestre! Abraço.

    Responder
  3. O texto diz “1. Pesquise por Agendador de Tarefas no Menu Iniciar e abra a ferramenta.”

    Outros tutoriais falam a mesma coisa.

    Pois bem, nem sempre isso funciona. Mostra “Arquivo não encontrado” ou entra no site do BING.

    Seria mais fácil indicar o caminho e nome do arquivo.

    Responder
    • O comando para abrir o Agendador de Tarefas é:

      control schedtasks

      Você pode abrir a caixa Executar pressionando as teclas Win + R simultaneamente e colar o comando acima para abrir o Agendador de Tarefas.

      Responder
  4. Têm como configurar logs para envio por e-mail?

    Responder
    • Você pode criar uma nova tarefa agendada para ser executada alguns minutos depois para lhe enviar um e-mail com o arquivo de log. Basta escolher na guia “Ações” a opção de envio de e-mail e anexar o arquivo de log.

      Responder
  5. Qual o comando para enviar a mesma origem para dois destinos?

    Responder
    • Não conheço. O que você pode fazer é executar o comando duas vezes, uma vez para cada pasta de destino.

      Responder
  6. Olá. Posso fazer várias linhas de comando no arquivo de script, para fazer backup de várias pastas diferentes? Obrigado.

    Responder
    • Tallvez seja possível, faça um teste. Se não conseguir, crie um script para cada pasta.

      Responder
  7. Meu amigo, como faço para copiar de origem para destino, mantendo apenas os arquivos mais recentes, de um tipo de arquivo especifico por exemplo (.txt)?

    Responder
    • Use o backup incremental e adicione *.txt após a pasta de destino.

      robocopy "C:\Origem" "D:\Destino" *.txt /E /COPYALL /Z /R:3 /W:10 /XO /NP

      Responder
  8. Grande Sérgio Motta, muito obrigado pelas dicas.

    Estou há tempos tentando esse procedimento e sempre me frustro mas agora com suas orientações consegui, finalmente, fazer o bendito backup do Outlook em uma pasta que é salva a nuvem.

    O backup normal é feito em C:/ que não é salvo na nuvem.

    Quanto ao automatismo, alterei o horário do disparador e o caminho do script na ação para testar em 5 minutos e não funcionou.

    Não sei onde estou errando.

    Pode me ajudar?

    Responder
  9. Olá Sérgio Motta,
    Dando continuidade à minha saga, informo:

    1 – O script para o backup está funcionando ok se o outlook não estiver aberto, caso contrário exibe a msg que outra instância está impedindo a continuidade da tarefa.

    2 – Para a automação criei outra tarefa usando a opção Criar tarefa básica que está funcionando, apesar de relatar código 0x9.

    Há como superar esses probleminhas?

    Responder
    • Sobre a primeira dúvida, você pode tentar trocar o parâmetro /Z para /ZB para ver se ele usa o modo de cópia backup se o modo reiniciável não funcionar.

      Sobre a segunda questão, toda execução do robocopy retorna um código, embora esse não esteja listado, Veja abaixo:

      0×00 0 No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.

      0×01 1 One or more files were copied successfully (that is, new files have arrived).

      0×02 2 Some Extra files or directories were detected. No files were copied. Examine the output log for details.

      0×04 4 Some Mismatched files or directories were detected. Examine the output log. Housekeeping might be required.

      0×08 8 Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further.

      0×10 16 Serious error. Robocopy did not copy any files. Either a usage error or an error due to insufficient access privileges on the source or destination directories.

      Responder
  10. Bom dia Sérgio,
    Através do robocopy é possível selecionar por algum parametro a data de modificação pelo tipo de arquivo ex: *.bak

    Responder
  11. Sergio, boa noite e parabéns pelo trabalho que anda fazendo.

    Sabe me dizer se no Backup incremental é possível renomear o arquivo antigo ao invés de substituí-lo.

    Gostaria de backupear os arquivos, porém seria legal manter na mesma pasta um “Versionamento” do arquivo que foi alterado se possível renomeando com o mesmo nome mas com a data no final.

    Atualmente utilizo como Backup o “Bacar” indicado aqui também.

    Responder
    • Olá Cesar,

      Perdão pela demora, acredito que seja possível sim criando uma pasta temporária para comparar os arquivos.

      Vou tentar escrever o comando e testá-lo e te retorno em breve.

      Responder
  12. Excelente tutorial. Muito agradecido!!

    Responder
  13. Boa tarde Sergio,

    Consigo dentro do script mandar zipar a pasta ou arquivos de destino?

    Responder
    • Acredito que seja possível compactar os arquivos através de linha de comando usando o 7-Zip e depois fazer o backup apenas do arquivo ZIP. Tipo isso:

      robocopy “C:\Origem” “D:\Destino” *.zip /E /COPYALL /Z /R:3 /W:10 /XO /NP

      Porém, você precisará pesquisar como usar o 7-Zip via linha de comando e incluir o comando para zipar no script, antes de executar o robocopy.

      Acho que assim funcionaria.

      Responder
  14. Cara muito bom mesmo.

    Tenho uma dúvida, esse comando tbm serve para copiar arquivos na rede? Por exemplo, tenho um servidor em rede com uma pasta de arquivos, eu queria saber se tem como fazer uma cópia desses arquivos diariamente, tipo apagando um dia e escrevendo novamente o outro.

    Responder
    • Sim, é possível copiar arquivos pela rede, nesse caso você usaria algo como robocopy “\\nomedoservidor\minhapasta\” “D:\Destino”

      Para fazer a cópia em dias alternados, basta você selecionar a opção semanal e escolher os dias da semana que deseja realizar a cópia.

      Responder
      • Olá Sergio, muito obrigado pela resposta vou colocar em prática.

        Responder
      • Fiz esse procedimento mas aparece que o usuário não tem privilégios necessários, e depois de tentar fazer o backup a pasta destino não aparece no HD externo.

        Responder
        • Você precisa executar o script como administrador.

          Veja a etapa 4 do passo 2:

          Agora quando quiser realizar o backup, basta executar o arquivo .bat. Note que ele precisa ser executado como Administrador. Clique com o botão direito no arquivo .bat e selecione “Executar como Administrador”.

          Responder

Deixe o seu comentário: