Copiando arquivos com o robocopy
Autor: Tarcio Santos | Publicado: 2012-05-25T06:32:00-07:00



O robocopy pode ser utilizado de várias maneiras para copiar 
arquivos entre computadores, ou mesmo entre dispositivos de 
armazenamento.

&nbsp;Para copiar o conteúdo de uma pasta para outro local basta utilizar o comando:


robocopy origem destino

Se quiser incluir as subpastas deve-se acrescentar a opção /s:

robocopy origem destino /s

Pode ser utilizado 
para se fazer mirror de uma pasta, ou seja, ter dentro dela o mesmo 
conteúdo de uma outra pasta. Para isso, utiliza-se a opção /mir


robocopy origem destino /mir

O robocopy pode também copiar apenas determinados tipos de arquivos.
Caso se queira copiar apenas os arquivos de música para um mp3 player, por exemplo:


robocopy origem destino /s &nbsp;*.mp3&nbsp;

Lembrando que o ele só vai copiar os arquivos novos e os modificados, os
 arquivos que já existem na pasta de destino não serião copiados 
novamente.
Porém, pode-se também fazer o robocopy não copiar arquivos com determinados critérios.
Por exemplo, não copiar os arquivos extras (arquivos que não existem no destino):


robocopy origem destino /s /xx *.mp3&nbsp;

Não copiar os arquivos mais novos e mais antigos (arquivos que foram modificado na origem ou destino):


robocopy origem destino /s /xn /xc /xo *.mp3&nbsp;

Não copiar os arquivos maiores que 5MB (5242880 bytes), nem os menores que 5KB (5120 bytes):


robocopy origem destino /s /max:5242880 /min:5120 *.mp3&nbsp;

É possível também excluir da lista de arquivos a serem copiados 
determinadas pasta ou arquivos. Por exemplo, não copiar a pasta variados
 nem o arquivo audio1.mp3


robocopy origem destino /s /xd variados xf audio1.mp3 *.mp3&nbsp;

Uma das grandes vantagens do robocopy é a capacidade de continuar a 
transferência de um arquivo incompleto, para tanto basta adicionar a 
opção /Z. Porém em alguns casos não é possível usar o modo reiniciável, 
por isso há também um outro modo de cópia, o de backup (opção /B). É 
recomendavel é usar a opção /ZB para que o robocopy tente utilizar o 
modo reiniciável e, caso o acesso ao arquivo seja negado, usar o modo 
backup.
Apenar o robocopy não possuir uma opção de sincronização de mão-dupla 
(copiar modificações em ambos os sentidos), pode-se utiliza-lo para esse
 propósito. Basta executar dois comandos de cópia, utilizando as opções a
 seguir:


robocopy pasta1 pasta2 /xc /xo *.*
robocopy pasta2 pasta1 /xc /xo *.*&nbsp;

Porém deve se levar em consideração que neste caso o robocopy não copia 
arquivos que mudaram de tamanho mas não tiveram suas data de modificação
 atualizada.
Para facilitar o uso o robocopy ainda permite que a opções sejam salvas 
para que possam ser utilizadas posteriormente. Para salvar as opções de 
cópia utiliza-se a opção /save: seguido do nome do arquivo. Para 
utilizar as opções salvar utiliza-se a opção /job: seguido do nome do 
arquivo. Ex:


robocopy pasta1 pasta2 /xc /xo /save:copia1 *.*&nbsp;
robocopy pasta2 pasta1 /job:copia1

Ao salvar as opções de cópia ele também salva o caminho das pastas que 
foram utilizadas. Portanto, se vc precisa usar o mesmo comando de cópia 
muitas vezes utlizando as mesmas opções e as mesmas pastas, basta 
salva-las e utilizar /nosd e /nodd para dizer ao programa que deve ser 
utilizado as pasta que foram salvas no arquivo. Ex:

robocopy pasta1 pasta2 /xc /xo /save:copia1 *.*&nbsp;
robocopy /nosd /nodd /job:copia1



Exemplo que utilizo para copiar arquivos pela rede.

ROBOCOPY \\SERVIDOR\Dados E:\Dados /MIR /MT:10 /Z /R:2 /W:2 /COPYALL

MIR = Espelho o que está no servidor A no B (Se houver algum arquivo no destino que não exista na origem ele será apagado)
MT:10 = copia 10 arquivos em paralelos ao invés de um
/z = recomeçar de onde parar o processo de cópia se houver problemas
R:2 = Se houver falha na cópia de algum arquivo duas tentativas serão realizadas
W:2 = com intervalos de 2 segundos.
COPYALL = Copia todos os atributos dos arquivos data/hora/, permissões e etc