Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
O propósito desse artigo é demonstrar o uso do robocopy em dois cenários que encontro
com facilidade em ambiente corporativo:
:1
ROBOCOPY “\\SERVIDOR\Conteudo\Dados” “E:\Download\Dados”
/MIR /MT:10 /Z /R:2 /W:2
goto 1
Também se pode abrir o CMD e digitar:
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:
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:
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.