RoboCopy

De Wiki Projeto Root
Ir para navegação Ir para pesquisar

Essa é uma boa ferramenta para cópia, backup e sincronização de arquivos no Windows. Podemos compará-la ao rsync do Linux.

Comandos

Comando de sincronização mais simples:

robocopy C:\ E:\ /MIR /SEC

Opções

/MIR
- Essa opção é para a sincronização mais completa. É a abreviação das opções /E e /PURGE, as quais copiam pastas e subpastas mesmo se estiverem vazias e apagam no destino os arquivos que não mais existem na origem, respectivamente.
/SEC
- Mantem permissões especiais dos arquivos e pastas.
/R:?
- Se tiver problemas de permissão com um arquivo, tentará 1 milhão de vezes por padrão. Com essa opção podemos configurar isso. /R:1 tentará apenas uma vez.
/W:?
- Assim como a opção /R, o /W define o timeout entre cada tentativa de cópia. Ex: /W:1 vai esperar 1 segundo e tentar de novo.
/L
- Esse opção sempre deve ser usada antes de colocar o comando em produção. Ela simula as ações, mas sem mexer em nada. Acompanhe os logs para ver se ficou tudo certo.
/XD
- Opção bem útil. Com ela definimos exceções de sincronização. Ex:
robocopy C: E:\ /MIR /XD C:\dir1

Isso vai sincronizar tudo que tem na unidade C:\ com exceção da pasta "dir1".

Tratamento de Erros

O Robocopy não usa o retorno padrão (0 - OK, 1 - erro). É importante saber desse detalhe ao fazer um tratamento de erros em um script, por exemplo. Tabela de retornos do Robocopy:

0 - Nenhum erro ocorreu e nenhuma cópia foi feita.
1 - Um ou mais arquivos foram copiados com sucesso.
2 - Nenhum arquivo foi copiado, arquivos extras foram detectados.
4 - Alguns arquivos com diferença foram encontrados, analisar retorno do log.
8 - Ocorreu erro ao copiar alguns arquivos.
16 - Nenhum arquivo foi copiado.

Obs.: pode ocorrer de algum erro ser a combinação de dois erros. (Erro 5 = Erro 4 + Erro 1)

Referências

http://blogs.technet.com/b/filecab/archive/2008/07/31/robocopy-mir-switch-mirroring-file-permissions.aspx
[1]

Erro com Cópia por Agendamento

O agendamento de tarefas agendadas não executa um .bat que aponte para unidades mapeadas. Se esse for o seu caso, informe o caminho inteiro da unidade a ser copiada e o destino.