Pages

terça-feira, 31 de janeiro de 2012

Copiando dados com o Robocopy

Vamos conhecer o utilitário Robust File Copy, mais conhecido como Robocopy que é uma ferramenta de linha de comando que realiza cópia de dados de uma forma segura e eficiente.
Aqueles que trabalham com administração de redes e servidores de vez em quando realizam a migração de dados entre servidores, seja na ocasião de uma máquina nova ou mesmo na emergência devido a fato do servidor antigo estar com problemas. Independente da situação a transferência de dados entre os servidores sempre será necessária e esta tarefa se torna um tanto penosa quando não se tem uma ferramenta adequada. Muitos ainda utilizam a cópia manual dos dados, que além de ser mais lenta, não retorna nenhum log de verificação da cópia realizada.
Podem ser utilizados softwares e utilitários de backup, sendo que neste caso primeiro é feito o backup em alguma mídia (fita, CD, DVD...) dos dados do servidor antigo e depois os mesmos são restaurados no servidor novo. Trata-se de uma opção mais demorada.
Temos uma boa opção chamada Robocopy, que abordaremos neste artigo, que realiza a cópia de diretórios e arquivos de uma maneira rápida, simples e funcional, transferindo inclusive os atributos e permissões NTFS originais dos dados copiados, podendo gerar logs demonstrativos com todas as informações sobre a cópia e com uma ótima performance mesmo quando se trata de uma grande massa de dados.
O Robocopy atualmente na versão XP010 é uma ferramenta de linha de comando, gratuita disponível desde o Windows NT e que está incluída no pacote de ferramentas Resource Kit do Windows Server 2003, que pode ser baixado em http://www.microsoft.com/downloads/details.aspx?familyid=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en. Esta versão pode ser utilizada nas versões 2000, XP, 2003 e Vista do Windows. O arquivo executável possui apenas 78 KB e no diretório onde estão as ferramentas do Resource Kit (caso seja mantido o padrão da instalação, C:\Arquivos de programas\Windows Resource Kits\Tools), encontramos o arquivo robocopy.doc, contendo a descrição da ferramenta e as diversas opções de sintaxe que o robocopy possui.
Outra forma para verificar a sintaxe do comando Robocopy, seria digitando o comando com a opção /?
Opções de sintaxe para o comando Robocopy
Um cenário bem interessante para utilização do Robocopy é a migração de dados entre dois servidores de arquivos. Sabemos que neste caso além da cópia é necessária a manutenção dos atributos e permissões dos dados que serão migrados. Podem ser criados arquivos de lotes com chamadas para o Robocopy e sua sintaxe com o intuito de otimizar a tarefa ou até mesmo programar um agendamento.
A sintaxe do comando é a seguinte:
Robocopy origem destino [opções do comando]
Exemplos de utilização do comando
Vamos ver alguns exemplos de utilização do Robocopy.
1. Cópia do diretório Scripts armazenado na unidade C para o diretório Backup na unidade D na mesma máquina:
robocopy.exe c:\scripts d:\backup
2. Cópia do mesmo diretório Scripts e dos sub-diretórios (opção /e) para o diretório Backup:
robocopy c:\scripts d:\backup /e
3. Cópia do dados armazenados no compartilhamento Gerencias no Servidor1 para o Servidor 2:
robocopy \\servidor1\Gerencias\ \\servidor2\Gerencias\ /E /ZB /COPYALL /R:0 /W:0 /V /NP /ETA /LOG:c:\teste-robocopy.log
Vejam as opções do comando utilizadas:
/E – Cópia dos sub-diretórios
/ZB – Modo Backup
/COPYALL – Cópia de todas as informações do arquivo
/R:0 - não repete a cópia em caso de falha
/W:0 - por não repetir a cópia em caso de falha também não há tempo de espera entre as repetições
/V - Exibe os arquivos que por alguma razão não foram copiados
/NP - Não exibe o progresso da cópia
/ETA - Exibe o tempo estimado que a cópia dos dados levará
/LOG: - Especifica o local onde o log será armazenado
Concluindo
Abordamos neste artigo os conceitos para utilização do comando Robocopy que não deve faltar entre as ferramentas utilizadas por administradores e analista de redes Windows. Vale citar que o utilitário permite uma série de opções que não foram abordadas aqui, além de outros cenários e modos de utilização, mas para um aprofundamento vale a pena a leitura do arquivo doc que acompanha o Robocopy.


Lista de comandos:
——————————————————————————-

ROBOCOPY:: Robust File Copy para Windows
——————————————————————————-
Utilização:: ROBOCOPY origem destino [ficheiro [ficheiro]…] [opções]
origem :: Directório de Origem (unidade:\caminho ou \\servidor\partilha\caminho).
destinatino :: Destination Dir (unidade:\caminho ou \\servidor\partilha\caminho).
ficheiro :: Ficheiro(s) a copiar (nomes/caracteres universais: a predefinição ‚ “*.*”).
::
:: Opções de cópia:
::
/S :: copiar Subdirectórios, excepto os que estiverem vazios.
/E :: copiar Subdirectórios, incluindo os que estiverem vazios.
/LEV:n :: copiar apenas os primeiros n níveis da árvore de directórios de origem.
/Z :: copiar ficheiros em modo reiniciável.
/B :: copiar ficheiros no modo de Cópia de Segurança.
/ZB :: utilizar o modo reiniciável; se o acesso for negado,
utilizar o modo de Cópia de Segurança.
/EFSRAW :: copiar todos os ficheiros encriptados em modo EFS RAW.
/COPY:sinalizadorescópia :: conteúdo a COPIAR para os ficheiros (predefinição: /COPY:DAT).
(sinalizadorescópia : D=Dados, A=Atributos, T=Carimbos de data/hora).
(S=Segurança=ACLs de NTFS, O=Informações do proprietário, U=Informações de auditoria).
/DCOPY:T :: COPIAR Carimbos de Data/Hora de Directórios.
/SEC :: copiar ficheiros com segurança (equivalente a /COPY:DATS).
/COPYALL :: COPIAR TODAS as informações dos ficheiros (equivalente a /COPY:DATSOU).
/NOCOPY :: NÇO COPIAR informações dos ficheiros (útil com o comando /PURGE).
/SECFIX :: CORRIGIR a segurança dos ficheiros em todos os ficheiros, mesmo os ficheiros ignorados.
/TIMFIX :: CORRIGIR datas/horas em todos os ficheiros, mesmo o ficheiros ignorados.
/PURGE :: eliminar ficheiros/directórios de destino que já não existam na origem.
/MIR :: Espelhar uma árvore de directórios (equivalente a /E em conjunto com /PURGE).
/MOV :: Mover ficheiros (eliminar da origem depois de copiar).
/MOVE :: MOVER ficheiros E directórios (eliminar da origem depois de copiar).
/A+:[RASHCNET] :: adicionar os Atributos especificados a ficheiros copiados.
/A-:[RASHCNET] :: remover os Atributos especificados dos ficheiros copiados.
/CREATE :: CRIAR árvore de directórios e ficheiros de comprimento zero apenas.
/FAT :: criar ficheiros de destino através de nomes de ficheiros FAT 8.3 apenas.
/256 :: desactivar suporte para caminhos muito longos (> 256 caracteres).
/MON:n :: MONITORIZAR origem; voltar a executar se forem apresentadas mais de n alterações.
/MOT:m :: MONITORIZAR origem; voltar a executar em m minutos, se houver alterações.
/RH:hhmm-hhmm :: Horas de Execução – alturas em que poderão ser iniciadas novas cópias.
/PF :: verificar horas de execução Ficheiro a Ficheiro (não por cada passagem).
/IPG:n :: Intervalo entre Pacotes (ms), para libertar largura de banda em linhas lentas.
/SL:: copiar hiperligações simbólicas em vez do destino.
/MT[:n] :: Criar cópias multithread com n threads (predefinição 8).
n tem de ser pelo menos 1 e não pode ser maior que 30.
Esta opção ‚ incompatível com as opções /IPG e /EFSRAW.
Redireccionar os resultados através da opção /LOG para um melhor desempenho.
::
:: Opções de Selecção de Ficheiros:
::
/A :: copiar apenas ficheiros que tenham o atributo Arquivo definido.
/M :: copiar apenas ficheiros que tenham o atributo Arquivo e repor o atributo.
/IA:[RASHCNETO] :: Incluir apenas ficheiros que tenham qualquer um dos Atributos especificados definido.
/XA:[RASHCNETO] :: Excluir ficheiros que tenham qualquer um dos Atributos especificados definido.
/XF file [ficheiro]… :: Excluir Ficheiros que coincidam com os nomes/caminhos/caracteres universais especificados.
/XD dirs [directórios]… :: Excluir Directórios que coincidam com os nomes/caminhos especificados.
/XC :: excluir ficheiros alterados.
/XN :: excluir ficheiros mais recentes.
/XO :: excluir ficheiros mais antigos.
/XX :: Excluir ficheiros e directórios suplementares.
/XL :: Excluir ficheiros e directórios isolados.
/IS :: incluir os mesmos ficheiros.
/IT :: incluir ficheiros optimizados.
/MAX:n :: Tamanho máximo de ficheiro – excluir ficheiros com um tamanho superior a n bytes.
/MIN:n :: Tamanho mínimo de ficheiro – excluir ficheiros com um tamanho inferior a n bytes.
/MAXAGE:n :: ANTIGUIDADE máxima de ficheiro – excluir ficheiros com mais de n dias/data.
/MINAGE:n :: ANTIGUIDADE mínima de ficheiro – excluir ficheiros com menos de n dias/data.
/MAXLAD:n :: Data Máxima do último Acesso – excluir ficheiros não utilizados desde n.
/MINLAD:n :: Data Mínima do último Acesso – excluir ficheiros utilizados desde n.
(Se n < 1900 então n = n dias, caso contrário n = data em formato AAAAMMDD).
/XJ :: excluir pontos de Junção (normalmente incluído por predefinição).
/FFT :: assumir Tempos de Ficheiros FAT (granulação de 2 segundos).
/DST :: compensar diferenças de tempo DST de uma hora.
/XJD :: excluir pontos de Junção para Directórios.
/XJF :: excluir pontos de Junção para Ficheiros.
::
:: Opções de Repetição:
::
/R:n :: número de Tentativas em cópias falhadas: a predefinição ‚ de 1 milhão.
/W:n :: Tempo de espera entre tentativas: a predefinição ‚ de 30 segundos.
/REG :: Guardar /R:n e /W:n no Registo como predefinições.
/TBD :: espera para nomes de partilha A DEFINIR (erro de repetição 67).
::
:: Opções de Registo:
::
/L :: Listar apenas – não copiar, colocar carimbo de data/hora ou eliminar quaisquer ficheiros.
/X :: comunicar todos os ficheiros suplementares, não apenas os seleccionados.
/V :: produzir saída Verbosa, com apresentação dos ficheiros ignorados.
/TS :: incluir Carimbos de Data/Hora de ficheiros de origem na saída.
/FP :: incluir Nome de Caminho Completo na saída.
/BYTES :: imprimir tamanhos como bytes.
/NS :: Sem Tamanho – não registar tamanhos de ficheiros.
/NC :: Sem Classe – não registar classes de ficheiros.
/NFL :: Sem Lista de Ficheiros – não registar nomes de ficheiros.
/NDL :: Sem Lista de Directórios – não registar nomes de directórios.
/NP :: Sem Progresso – não apresentar percentagem copiada.
/ETA :: mostrar Hora Estimada de Recepção de ficheiros copiados.
/LOG:ficheiro :: enviar estado para ficheiro de REGISTO (substituir registo existente).
/LOG+:ficheiro :: enviar estado para ficheiro de REGISTO (acrescentar ao registo existente).
/UNILOG:ficheiro :: enviar estado para ficheiro de REGISTO como UNICODE (substituir registo existente).
/UNILOG+:ficheiro :: enviar estado para ficheiro de REGISTO como UNICODE (acrescentar ao registo existente).
/TEE :: enviar para a janela da consola e para o ficheiro de registo.
/NJH :: sem cabeçalho de tarefa.
/NJS :: sem resumo de tarefa.
/UNICODE :: emitir estado como UNICODE.
::
:: Opções de Tarefa:
::
/JOB:nometarefa :: tirar parâmetros do ficheiro da TAREFA especificado.
/SAVE:nometarefa :: GUARDAR parâmetros no ficheiro de tarefa especificado
/QUIT :: SAIR depois de processar a linha de comandos (para ver parâmetros).
/NOSD :: NÃO foi especificado um Directório de Origem.
/NODD :: NÃO foi especificado um Directório de Destino.
/IF :: Incluir os seguintes Ficheiros.

16 comentários:

  1. Parabéns pelo Post... completo e detalhado... show!!!

    ResponderExcluir
  2. Boa tarde,

    Estou com problema na cópia de alguns arquivos pois tem nomes longos, alguma dica de como resolver isto?

    ResponderExcluir
  3. Boa tarde,

    Estou com problema na cópia de alguns arquivos pois tem nomes longos, alguma dica de como resolver isto?

    ResponderExcluir
  4. Boa tarde

    Estou tetando rodar o comando de um disco adicional em minha maquina para o Servidor.
    Ele não transfere nada.

    robocopy "D:\Registro" "\\dbase2\Registro" /copyall /R:10 /W:30

    Ao torcar a unidade de origem para C:\Registro os arquivos são copiados normalmente.

    Podem ajudar?

    Obrigado.
    Mario
    marionastri@hotmail.com

    ResponderExcluir
  5. Boa tarde,


    Estou com um problema num cliente que usa o Robocopy para fazer backup e quando ele clica no arquivo para comecar o backup da um erro dizendo que o acesso e negado a tal arquivo e que o echo esta desativado, alguem sabe como resolver isso.

    Desde já agradeco a atencao

    ResponderExcluir
  6. Tenho uma pasta com música num disco externo que quero gravar para cd(S, mas antes pretendo mover esses ficheiros para subpastas.Por ex:20 ficheiros (1,2,3,4,5,6,7,8,9,..)para 4 subpastas (Subpasta a,b,c,d) ordenados assim ficheiros/pastas
    1 a
    2 b
    3 c
    4 d
    5 a
    6 b
    7 c
    8 d
    9 a
    10 b
    e assim sucessivamente.Antecipadamente Grato.

    ResponderExcluir
  7. Anônimo ref ao echo esta desativado e porque na linha de comando ele esta com a obs: off e so trocar para on que vai roda e ref a acesso negado deve ser porque vc não esta com o usuario Administrador da maquina.

    att
    Thiago Santos

    ResponderExcluir
  8. Rafael Fernandes lembrando que os nomes compostos de arquivos e pasta deve conter "arquivo arquivo arquivo arquivo" para que o RoboCopy consiga copilar.

    Att
    Thiago Santos

    ResponderExcluir
  9. Bom Dia.
    Este é o meu primeiro contato com a ferramenta Robocopy.exe
    No entanto preciso copiar dados da unidade C do servidor para a unidade H do mesmo servidor.
    Mas antes de executar no servidor eu resolvi fazer um teste no meu computador.
    Executei o seguinte comando.
    * coloquei o executavel do robocopy.exe na unidade c:
    * entrei no prompt de comando
    * digitei: robocopy c:\teste d:\teste2
    Mas nenhum arquivo foi copiado.
    também usei o comando: robocopy c:\teste d:\teste2 /e/sec
    Mas também não funcionou.

    Alguém pode me ajudar?

    ResponderExcluir
  10. Olá!

    Como faço para copiar todos os dias os arquivos do dia anterior e salvar esses arquivos nomeando-os com a data corrente cada um deles? pegando de dois diretórios diferentes.
    exemplo: diretório_raiz>subdiretório1 e subdiretório2 (cada subdiretório com o seu respectivo arquivo). gostaria de salvar todos os dias o arquivo mais atual dos subdiretórios e levando-os para um outro diretório_backup, salvando-os só que acrescentando no final de cada arquivo salvo a data que os respectivos estão sando salvos.

    ResponderExcluir
  11. Ola !! tem como programa ele para fazer backup todos os dias as 12:00??

    ResponderExcluir
  12. Parabéns foi muito útil ! Obrigado!

    ResponderExcluir
  13. olá qual parametro para ele exibirt tempo estimado de copia?

    ResponderExcluir