Você está na página 1de 2

Sempre que preciso copiar vários arquivos (ou arquivos enormes) entre partições, HD externo ou pastas

compartilhadas em rede eu uso o Robocopy. Ele está disponível desde o Resource Kit do Windows NT e
nativamente desde o Windows Vista / Server 2008 e posteriores.

Por padrão o Robocopy é uma ferramenta de


sincronismo de pastas, isto é, se um
determinado arquivo do ponto A (origem) já
existir no ponto B (destino) ele não será
copiado novamente (a menos que o arquivo do
ponto A sofra alguma modificação). Portanto
também é uma interessante forma de backup.
O propósito desse artigo é demonstrar o uso
do robocopy em dois cenários que encontro com facilidade em ambiente corporativo:

• Replicação de arquivos/pastas quando temos um link lento/instável entre a origem e o


destino
• Arquivar (mover) arquivos antigos de um file server para um HD USB (ou para outro local)
Mesmo se você já for usuário do Robocopy vale a pena consultar a documentação recente para conhecer
as novas funcionalidades.

Para as dicas abaixo eu estou considerando alguns recursos disponíveis no Robocopy que vem no
Windows 7 / Windows Server 2008 R2 (alguns parâmetros podem não funcionar em versões anteriores):

Cenário 1: Replicação de arquivos/pastas quando temos um link lento/instável entre a


origem e o destino

Se você precisa replicar todo o conteúdo de uma determinada pasta compartilhada em rede
(ex.: \\SERVIDOR\Conteudo\Dados) para o seu HD USB (ex.: E:\Download) através de um link lento, ou
não muito confiável, minha sugestão é executar o Robocopy a partir de um arquivo .CMD, possibilitando
sincronizar todo o conteúdo mesmo que durante o processo de cópia ocorra algum problema com a rede.
Crie um arquivo Download.CMD a partir do bloco de notas com o seguinte conteúdo:

:1
ROBOCOPY “\\SERVIDOR\Conteudo\Dados” “E:\Download\Dados” /MIR /MT:10 /Z /R:2 /W:2
goto 1
A única utilidade desse arquivo .CMD é executar o Robocopy em loop para recomeçar de onde parar o
processo de cópia (argumento /Z) se houver problemas com a rede ou com algum dos PCs/Servidores. Se
houver falha na cópia de algum arquivo duas tentativas serão realizadas (parâmetro /R:2), com um
intervalo de 2 segundos entre elas (parâmetro /W:2). O parâmetro /MT:10 (novidade) permite cópia
multi-thread (quem usa RichCopy adora isso) de 10 arquivos em paralelo (e não apenas um arquivo por
vez).

Cuidado com o parâmetro /MIR, pois ele espelha todo o conteúdo, inclusive pastas/subpastas. Se na
pasta origem, por exemplo, você tem 10 arquivos a pasta destino terá os mesmo 10 arquivos. Se você
copiar algum arquivo extra no destino e rodar o comando novamente esse arquivo extra será apagado
(porque não existe na origem). Se você quiser apenas uma cópia “incremental”, mantendo os atuais
arquivos na pasta destino substitua o /MIR pelo /E.

Parâmetros extras:

• /XF *.mp3 – ignora arquivos com extensão .MP3


• /XD temp – ignora pastas com o nome “temp”
• /COPYALL – copia todos os atributos dos arquivos como data/hora, segurança…
Dica extra: Quer controlar a data/horário de início do robocopy, além de duração máxima de sua
execução (por exemplo, agendar um download/upload apenas em horário não comercial)? Use o
Agendador de Tarefas do Windows (Task Scheduler).

Cenário 2: Arquivar (mover) arquivos antigos de um file server para um HD USB (ou para
outro local)
Suponha que temos a necessidade de arquivar (mover) todos os arquivos com mais de 3 anos de uma
pasta \\SERVIDOR\Docs para a pasta E:\Docs. A sintaxe seria:

ROBOCOPY “\\SERVIDOR\Docs” “E:\Docs” /MOVE /E /R:2 /W:2 /MINAGE:20080309


/LOG+:”E:\log.txt” /TEE

Esse comando vai mover (/MOVE) todos os arquivos, inclusive pastas e subpastas (/E), exceto os
arquivos mais novos que 09/Março/2008 (o parâmetro /MINAGE:20080309 move os mais antigos,
mantendo os mais novos), registrando todo o processo em um arquivo de log incremental
(/LOG+:”E:\log.txt”). O parâmetro /TEE permite acompanhar no prompt de comandos o andamento do
todo o processo de cópia (importante quando usamos algum parâmetro de log).

Como essa operação envolve a operação “mover” (copia para o destino e apaga na origem) eu recomendo
incluir o parâmetro /L para simular o processo. Quando você estiver ciente de que a sintaxe está correta
remova o parâmetro /L.

Para conhecer todos os parâmetros do Robocopy digite no prompt de comandos ROBOCOPY /? e bom
divertimento!

Você também pode gostar