close

Robôcópia

Ir para a navegação Ir para a pesquisa

robocopy , ou "Robust File Copy", é um comando de replicação de diretório , disponível na linha de comando . Fazia parte do Windows Resource Kit e foi introduzido como um recurso padrão do Windows Vista e do Windows Server 2008 .

Características

Robocopy se destaca por superar os comandos incluídos no Windows (COPY e xcopy ) e também:

  • Ele pode tolerar interrupções de rede e continuar copiando de onde parou (os arquivos incompletos são carimbados com a data 01/01/1980 e contêm um log de recuperação para que o Robocopy saiba onde continuar).
  • Você pode copiar com êxito atributos, informações do proprietário, fluxos de dados alternativos (ADS), informações de auditoria e datas padrão, sem a necessidade de parâmetros de comando complicados.
  • Você pode copiar a NTFS ACL , (adicionando o parâmetro /COPYALL /SEC) e declarar o "direito de backup" (/B) do Windows NT para que um administrador possa copiar um diretório inteiro, incluindo os arquivos cuja leitura é negada a o administrador.
  • Persistência por padrão, com um número programável de tentativas automáticas se um arquivo não puder ser acessado.
  • Possui um modo "espelho", que mantém a estrutura da árvore sincronizada, excluindo arquivos do destino, opcionalmente, caso não estejam mais na origem.
  • Ele pode copiar grandes quantidades de arquivos que o utilitário XCOPY não conseguiria fazer.
  • Possui um indicador de progresso na linha de comando que é atualizado continuamente.
  • Você pode copiar arquivos e pastas com nomes longos que excedam 256 caracteres - até um máximo teórico de 32.000 - sem erros. [ 1 ]
  • Suporta cópia multithread (somente Windows 7). [ 2 ]

Em particular, o Robocopy não pode copiar arquivos abertos em uso por outros usuários ou aplicativos. O chamado "modo de backup" é um privilégio administrativo que permite que o Robocopy substitua as configurações de permissão (especificamente, aquelas na ACL NTFS ) para a missão de backup. O subsistema Windows Volume Shadow Copy é o único que pode copiar arquivos abertos enquanto estão em uso. O Robocopy não implementa o acesso a este serviço, reduzindo sua utilidade como utilitário de backup para volumes em uso. No entanto, você pode usar os utilitários VSHADOWou DISKSHADOW(incluídos no Windows Server 2008 ) para criar um instantâneo de um volume do qual pode ser feito backup usando o Robocopy.

Além disso, por design, a versão original do Robocopy não é capaz de replicar atributos de segurança de arquivos cujas permissões foram alteradas após a replicação inicial. [ 3 ] Este comportamento foi corrigido nas versões Windows 2008 e Vista do Robocopy. Isso significa que o Robocopy não se comporta da mesma forma entre plataformas diferentes. [ 4 ]

A interface

Embora o Robocopy em si seja uma ferramenta de linha de comando, o Microsoft Technet também forneceu uma interface, que requer o .net Framework 2.0. Ele foi desenvolvido por Derk Benisch, engenheiro de sistemas do grupo MSN da Microsoft. [ 5 ] Esta interface inclui a versão XP026 do Robocopy (para Vista).

Exemplos de uso

Copie o conteúdo de um diretório recursivamente, de c:\foo para c:\bar

robocopy C:\foo C:\bar /E

Copie o conteúdo de um diretório recursivamente (/E), e copie todas as informações dos arquivos (/COPYALL, que é equivalente a /COPY:DATSOU, D=Data, A=Attributes, T=Date, S=Security=ACL de NTFS, O=Informações do proprietário, U=Informações de auditoria), sem novas tentativas em arquivos bloqueados (/R:0). Observe que as datas do diretório não serão redefinidas se uma versão anterior a XP026 for usada:

robocopy C:\foo C:\bar /COPYALL /E /R:0

Duplicar foo to bar, excluindo quaisquer arquivos em bar que não estejam em foo (/MIR), copiar arquivos em modo reiniciável (/Z) caso a conexão de rede seja perdida

robocopy C:\foo \\backupserver\bar /MIR /Z

Copie pastas, não arquivos

A sintaxe do Robocopy é distintamente diferente daquela usada pelos comandos normais de cópia, pois aceita apenas nomes de pastas, não arquivos, tanto na origem quanto no destino. Nomes de arquivo e curingas (como " *.* ") não são aceitos como origem ou destino. Arquivos podem ser selecionados ou excluídos usando argumentos de filtro, que só podem se referir a nomes de arquivos relativos a pastas já selecionadas, pois caminhos completos não são aceitos.

Por exemplo, para copiar o arquivo foo.txt do diretório c:\bar para c:\baz , a seguinte expressão seria usada

robocopy c:\bar c:\baz foo.txt

Lista parcial de parâmetros de linha de comando

A lista abaixo reflete as opções de linha de comando mais comuns para Robocopy [ 6 ]

Opções comuns

/MIR
Ativa o modo espelho, excluindo qualquer arquivo no destino que não esteja mais na origem (equivalente a /E e /PURGE).
/Z
Copie os arquivos no modo inicializável. "Reiniciable" hace mención a que Robocopy escribirá un registro de recuperación en el fichero incompleto en caso de que la operación se vea interrumpida o abortada, para que una futura ejecución de Robocopy pueda continuar por donde ésta lo dejó, en lugar de comenzar otra vez desde o princípio. Isso é útil para cópias confiáveis ​​de grandes arquivos ou quantidades em redes instáveis, como [Virtual Private Network|VPN] ou a Internet. Um arquivo incompleto tem o mesmo tamanho do arquivo completo e é datado em um período de 24 horas a partir de 01/01/1980 às 0:00.
/COPIAR TUDO
Verifique se foi feito backup da segurança NTFS. Equivalente a /COPY:DATSOU, onde D=Dados, A=Atributos, T=Data, S=Segurança=NTFS ACL, O=Informações do Proprietário, U=Informações de Auditoria.
/B
Abra o arquivo no modo de backup. Permite abrir arquivos sem restrições de segurança, mas requer direitos adicionais na origem e no destino.
/ZB
Use o modo reiniciável; se o acesso for negado, use o modo de backup.

Opções especializadas

/S
Copia subdiretórios se não estiverem vazios (como XCOPY).
/E
Copia subdiretórios, mesmo que estejam vazios (como XCOPY).
/M
Copia arquivos com o atributo Archive (como XCOPY com a opção /M).
/MOV
Mova os arquivos, excluindo-os da fonte.
/JOGADA
Exclua arquivos E pastas (exclua-os da fonte após a cópia).
/SEG:n
Monitore e inicie a cópia após n alterações (e minutos MOT).
/MOT:n
Defina o intervalo mínimo de monitoramento (n minutos) antes de iniciar outra cópia.
/XA:atributos
Exclua arquivos com qualquer um dos atributos fornecidos. Exemplo: /XA:H não copiará arquivos com o atributo oculto.
/Nome XF
Exclui arquivos indicados em nome . Curingas são aceitos. Exemplo: /XF *.bak não copiará nenhum arquivo com a extensão *.bak.
/XD nome
Exclua os diretórios indicados no nome em algum lugar do caminho . Funciona com curingas (por exemplo, /XD BKUP* não copiará diretórios que começam com "BKUP", não importa onde estejam na árvore).
/XC
Exclui arquivos com alterações .
/XN
E x cluir novos arquivos .
/XO
E x cluir arquivos mais antigos
/XX
Exclui arquivos e diretórios extras , que podem estar no destino, mas não na origem.
/XL
Exclua arquivos e diretórios solitários ; Pode estar na origem, mas não no destino.
/E SE
Inclua os seguintes arquivos.
/ES
Inclui os mesmos arquivos .
/ITEM
Inclui arquivos ajustados (por exemplo, se alguns tiverem atributos de arquivo e outros somente leitura).
/XJ
Excluir links simbólicos . _ Ao copiar contas de usuário para outro local no Windows Vista, é importante excluir links simbólicos. O link em '\Users\...\AppData\local' chamado 'Application Data' aponta para seu link pai, criando um loop que pode travar o Robocopy. Além disso, se um link apontar para um disco de origem que é copiado para outro disco de destino usando /MIR (ou /E e /PURGE) e o link for copiado, ele apontará para o disco de origem, o que pode resultar no conteúdo do disco de origem.
/R:n
Diz ao Robocopy as 'n' tentativas antes de sair com erro (1 milhão por padrão).
/IPG:n
Diz ao Robocopy a pausa em 'n' milissegundos entre os pacotes na transferência de rede. Útil para preservar a largura de banda em conexões lentas.
/EU
Simu L para fazer a cópia sem fazê-lo, para testar o resultado de uma configuração a partir da linha de comando.
/W:n
Tempo de espera entre as tentativas (30 segundos por padrão).
/PURGA
Exclua os arquivos que não estão na origem.
/DST
Compensação por diferenças horárias.
/DCOPIA:T
Copiar Datas de Diretórios. ### Disponível em XP026 (WinXP) e XP027 e posterior (Vista)
/MAXAGE:n
MAX file life - exclui arquivos com mais de n dias/data.
/MINAGE:n
Tempo de vida mínimo dos arquivos - exclui arquivos com menos de n dias/data.
(Se n < 1900 então n = número de dias, caso contrário n = data AAAAMMDD ).
/MT:n
Cópia multithread (somente Windows 7). O valor de n varia de 1 a 128 (8 por padrão)
/FFT
Suponha FAT File Times (granularidade de data/hora de 2 segundos).

Opções de registro

/NFL
Não registre nomes de arquivos.
/NDL
Não registre nomes de diretório.
/NS
Não registre tamanhos de arquivo.
/NC
Não registre classes de arquivos.
/X
Liste todos os arquivos extras.
/V
Extraia informações detalhadas, com os arquivos excluídos.
/TS
Inclua as datas dos arquivos de origem.
/PF
Inclua caminhos completos.
/NP
Não mostre % copiado.
/ETA
Mostrar hora prevista de chegada.
/LOG:arquivo.txt
Substitua file.txt pelo status da tarefa.
/LOG+:arquivo.txt
Adicione o status da tarefa ao arquivo.txt.
/TEE
Saída para a janela do console, bem como para o arquivo de log.
/NJH
Nenhum cabeçalho de tarefa.
/NJS
Sem resumo de tarefas.

(Veja a lista completa em [1] aqui)

Problemas conhecidos

Até XP026

  • A versão XP026 não retorna códigos ERRORLEVEL quando há diretórios/arquivos extras.
  • A nova opção no Vista (XP027) /EFSRAW : Copiar arquivos criptografados no modo EFS RAW; não disponível para XP (XP026).
  • Robocopy não copiará datas de pastas de origem. Em vez disso, ele usará a data atual ao criar novos. Se você deseja que ambas as cópias sejam iguais, você deve usar outra solução de backup. Endereçado na versão XP026 e na versão Vista (parâmetro /DCOPY:T)
  • Ele não copia de forma confiável nomes de arquivos curtos.
  • Copiar arquivos no modo reiniciável é muito mais lento (cerca de 6 vezes mais na rede) do que no modo normal ou de backup devido à sobrecarga de administração necessária.
  • Embora a versão XP026 já possa copiar arquivos compactados, ocorre muita fragmentação .
  • O modo de backup não pode substituir a negação explícita de permissão NTFS ACL se a cópia não for um objeto de propriedade. (Mensagem de erro: ERROR 5 (0x00000005) Copiando o backup NTFS para o diretório de destino. Acesso negado.) Este erro pode ser superado simplesmente copiando os dados com esta opção de configuração /COPY:DT em vez da opção /COPYALL
  • Robocopy não preserva links físicos .
  • Robocopy não pode copiar links FTP.

Códigos de retorno ErrorLevel

O código de retorno do Robocopy é um bitmap, como pode ser visto em: [ 7 ]

  • 0×16 Erro grave. Robocopy não copiou nenhum arquivo. É devido a um erro de uso ou direitos de acesso insuficientes na origem ou no destino.
  • 0×08 Alguns arquivos ou pastas não foram copiados (ocorreram erros de leitura e o limite de tentativas foi excedido). Verifique esses erros mais tarde.
  • 0×04 Algumas incompatibilidades de arquivo e nome de arquivo foram detectadas. Examine o log de saída. A administração provavelmente será necessária.
  • 0×02 Arquivos/diretórios extras foram detectados. Examine o log de saída. A gestão será necessária.
  • 0×01 Um ou mais arquivos foram copiados com sucesso (ou seja, novos arquivos chegaram).
  • 0×00 Sem erro, nada copiado. Origem e destino são totalmente sincronizados.

Você pode usar esses códigos para uso em arquivos em lote, da seguinte forma:

if  errorlevel  16  echo ***FATAL ERROR*** &  goto  : eof 
if  errorlevel  8  echo **COPYING FAILED** &  goto  : eof 
if  errorlevel  4  echo *MISCREPANCY* &  goto  : eof 
if  errorlevel  2  echo EXTRA FILES &  goto  : eof 
if  errorlevel  1  echo Copiar com sucesso &  goto  : eof 
if  errorlevel  0  echo –sem alteração– &  goto  : eof

Alternativamente, eles também podem ser usados ​​para fornecer informações mais detalhadas:

if  errorlevel  16  echo ***FATAL ERROR*** &  goto  : eof 
if  errorlevel  15  echo FAIL MISM XTRA COPY &  goto  : eof 
if  errorlevel  14  echo FAIL MISM XTRA &  goto  : eof 
if  errorlevel  13  echo FAIL MISM COPY &  goto  : eof 
if  errorlevel  12  echo FAIL MISM &  goto  : eof 
if  errorlevel  11  echo FAIL XTRA COPY &  goto  : eof 
if  errorlevel  10  echo FAIL XTRA &  goto  : eof 
if  errorlevel  9  echo FAIL COPY &  goto  : eof 
if  errorlevel  8  echo FAIL &  goto  : eof 
if  errorlevel  7  echo MISM XTRA COPY &  goto  : eof 
if  errorlevel  6  echo MISM XTRA &  goto  : eof 
if  errorlevel  5  echo MISM COPY &  goto  : eof 
if  errorlevel  4  echo MISM &  goto  : eof 
if  errorlevel  3  echo XTRA COPY &  goto  : eof 
if  errorlevel  2  echo XTRA &  goto  : eof 
if  errorlevel  1  echo COPY &  goto  : eof 
if  errorlevel  0  echo –sem alteração– &  goto  : eof

Versões

Nota: Várias versões do Robocopy não exibem o número da versão ao executar 'Robocopy /?' na linha de comando.

Versão do produto versão do arquivo Ano Fonte Outro
1,70 - 1997 Kit de recursos do Windows NT
1,71 4.0.1.71 1997 Kit de recursos do Windows NT
1,95 4.0.1.95 1999 Kit de recursos do Windows 2000
1,96 4.0.1.96 1999 Kit de recursos do Windows 2000 © 1995-1997
XP010 5.1.1.1010 2003 Kit de recursos do Windows 2003
XP026 5.1.2600.26 2005 Baixado com Robocopy GUI v.3.1.2
XP027 5.1.10.1027 2008 Incluído no Windows Vista , Server 2008, Windows 7 © 1995-2004
6.1 6.1.7601 2009 KB2639043 © 2009
6.2 6.2.9200 2012 Incluído no Windows 8 © 2012
6.3 6.3.9600 2013 Incluído no Windows 8.1 © 2013
10,0 10.0.10240 2015 Incluído no Windows 10 © 2015

Veja também

Referências (em inglês)

  1. http://windowsitpro.com/Windows/Articles/ArticleID/44324/pg/2/2.html Arquivado em 5 de novembro de 2005, no Wayback Machine Robocopy XP010 FAQ Use novas e poderosas opções de switch.
  2. "Executar cópias de arquivos multithread com Robocopy no Windows 7" . 
  3. Compromisso Robocopy da Microsoft .
  4. Bug feio no Robocopy - ignorando a segurança no nível do arquivo .
  5. Joshua Hoffman (novembro de 2006). "Utilitário Spotlight Robocopy GUI" (html) . TechNet Magazine (Microsoft Corporation e CMP Media, LLC) . Recuperado em 17 de julho de 2008 . 
  6. Robocopy.exe, Microsoft Windows Server 2003 Resource Kit, saída de ajuda quando executado com /? interruptor de linha de comando. Ajuda completa com /??? interruptor de linha de comando.
  7. "Códigos de retorno de nível de erro do Robocopy" . Arquivado a partir do original em 22 de dezembro de 2008 . Recuperado em 4 de julho de 2009 . 

Links externos