TI

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 programasWindows Resource KitsTools), 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 \servidor1Gerencias \servidor2Gerencias /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 \servidorpartilhacaminho).
destinatino :: Destination Dir (unidade:caminho ou \servidorpartilhacaminho).
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.