quarta-feira, 12 de janeiro de 2011

Sincronizando arquivos com o robocopy - Parte 1

O robocopy pode ser utilizado de várias maneiras para sincronizar arquivos entre computadores, ou mesmo entre dispositivos de armazenamento. A única desvantagem é que é que só sincroniza em uma direção, ou seja, o arquivos são copiados apenas da origem para o destino. Para saber mais sobre o robocopy veja meu outro post sobre o robocopy.
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 *.mp3 /s

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 *.mp3 /s /xx

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

robocopy origem destino *.mp3 /s /xn /xc /xo

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

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

É 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 *.mp3 /s /xd variados xf audio1.mp3

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

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
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
robocopy /nosd /nodd /job:copia1

7 comentários:

Unknown disse...

eu sei que essa não é a área pra isso, mais eh que nao achei seu contato!



Ola Roldão Jr...
Eu sou akiilh anderson, tenho visitado algum foruns e o seu blog é muito bom, parabens voce explica muito bem!
E é por isso que vir recorrer a voce,
minha situaçaõ é a seguinte:
Tenho um thin client que quero dar bood em um xp(ou 7), como tenho acompanhado no seu blog, eu tenho instalado o TFTPd32.. efim segui os tutoriais:
Usando o Thinstation como cliente do Terminal Serve
Montando um servidor de boot PXE
Iniciando o DOS pela rede

cara, não deu certo, na bios do thin client tenho a opcao de boot com windows CE
ou metodo de boot padrao(coloco como network e desktop) no sistema de boot tenho:

tcp/ip - usando BOOTP ou DHCP na loca ou network
NETWARE- 802.2/ 802.3 ou ethII , local o network
RPL- network ou local
PXE - network ou local



no PXE ele reconhece o dhcp e tudo mais, só que aparece erro
pxe-e79: nbp is too big to fit in free base memory
o arquivo fdboot
e com as outras isos pxet01: file not found
pxe-e3b tftp error file not found


Espero que não esteja incomodando, espero sua resposta atenciosamente

akiilh@hotmail.com

Anônimo disse...

Roldão,

Qual a opção para copiar somente os arquivos novos (criados ou modificados)?

Roldão Jr disse...

Ele já faz isso sem que seja necessário passar nenhuma opção.

Jardel Fischer disse...

bom dia, muito bom o artigo, mas como faço para copiar somente arquivos criados no dia ou dia anterior?

Roldão Jr disse...

Você pode usar os parametros /maxage e /minage para determinar valores máximos e minimos em dias.
/maxage:n não copiar arquivos mais antigos que n dias
/minage:n não copiar arquivos mais novos que n dias.

Anônimo disse...

Apesar de antigo, este post auxilia até hoje e foi o que me ajudou a resolver meu problema de sincronização entre duas máquinas.
Então, contribuindo, o comando sem parâmetros, copia arquivos diferentes, e não apenas os mais novos como dá a entender. Por exemplo, se você fizer uma cópia, alterar o arquivo no destino, e fizer nova cópia, ele vai apagar o que fez e reescrever com a cópia antiga da origem.
Para isto não acontecer e ele manter intactos os arquivos mais novos que foram modificados no destino, use /xo

Roldão Jr disse...

Ele copia os arquivos novos e modificados. Para realizar essa verificação ele se utiliza da data de modificação do arquivo. Valeu pela dica dessa parâmetro.