Robocopy: Os Parâmetros Que Transformam Cópia em Espelhamento Seguro

O Robocopy (Robust File Copy) é a ferramenta nativa de linha de comando do Windows que transforma cópias simples em um espelhamento seguro de dados, utilizando o parâmetro /MIR combinado com flags de controle de erros (/R:n /W:n), preservação de metadados (/COPYALL) e bypass de segurança (/B). Diferente de comandos legados, ele atua como um sincronizador inteligente de diretórios, transferindo apenas arquivos modificados e garantindo a integridade estrutural em migrações de servidores e rotinas de backup corporativas.

Principais Aprendizados

  • O parâmetro /MIR é destrutivo no destino; seu uso em produção exige uma simulação prévia com o parâmetro /L (Dry run).
  • A omissão dos parâmetros /R e /W faz o Robocopy tentar copiar arquivos bloqueados 1 milhão de vezes por padrão, travando o script.
  • A preservação total de permissões NTFS (/COPYALL) e o modo backup (/B) exigem a execução do terminal com privilégios de Administrador.

O Que Torna o Robocopy Superior ao XCOPY?

Introduzido originalmente no Windows NT 4.0 Resource Kit em 1996, o Robocopy consolidou-se como um recurso nativo padrão a partir do Windows Vista e Windows Server 2008. O consenso da área de infraestrutura aponta que o Robocopy não é apenas um "XCOPY mais rápido". Enquanto o XCOPY e o comando COPY tradicional copiam arquivos cegamente, o Robocopy compara a origem e o destino antes de agir.

Essa inteligência de sincronização, semelhante à do rsync em sistemas Unix, permite que a ferramenta transfira apenas o "delta" (arquivos novos ou modificados). Isso economiza largura de banda e tempo, colocando o Robocopy na categoria de ferramenta de replicação avançada.

Terminal de comando executando script Robocopy

A Anatomia do Espelhamento: Entendendo o /MIR

No contexto de espelhamento seguro, o parâmetro /MIR (Mirror) é o núcleo da operação. No entanto, segundo a documentação oficial da Microsoft, o /MIR não possui uma lógica isolada; ele é estritamente a combinação de dois outros parâmetros executados simultaneamente:

  • /E: Copia todos os subdiretórios, incluindo os que estão vazios.
  • /PURGE: Exclui arquivos e diretórios no destino que não existem mais na origem.

A natureza destrutiva do /PURGE torna o /MIR perigoso se mal configurado. O erro mais catastrófico ocorre na inversão da sintaxe padrão (robocopy <Origem> <Destino>). Se um diretório vazio for apontado como origem e um servidor de produção como destino, o Robocopy apagará todos os dados do servidor para "espelhar" o vazio.

Orquestrando um Backup Seguro: Parâmetros Essenciais

Para transformar uma simples replicação em um "espelhamento seguro", a recomendação técnica é orquestrar o /MIR com uma série de parâmetros de proteção e controle.

Prevenção de Desastres com o Dry Run (/L)

A regra de ouro entre administradores de sistemas é que o /MIR nunca deve ser executado em um ambiente de produção pela primeira vez sem o parâmetro /L (List-only). O /L realiza uma simulação da transferência, gerando um log detalhado do que seria copiado ou apagado, sem alterar um único byte no destino.

Quebrando o Loop de Erros (/R e /W)

Se o Robocopy encontrar um arquivo bloqueado ou em uso, seus valores de fábrica são extremamente agressivos: ele tentará copiar o arquivo 1.000.000 (um milhão) de vezes (/R), aguardando 30 segundos entre cada tentativa (/W). Na prática, é mandatório sobrescrever esse comportamento em qualquer script, declarando limites razoáveis, como /R:3 /W:5 (3 tentativas com 5 segundos de pausa).

Clonagem de Metadados e Permissões (/COPYALL e /B)

A migração de um File Server exige que as permissões acompanhem os arquivos. O uso de /COPYALL é o equivalente exato a declarar /COPY:DATSOU, garantindo a cópia de:

  • Dados
  • Atributos
  • Timestamps
  • Segurança (NTFS ACLs)
  • Owner (Informações de Proprietário)
  • U (Informações de Auditoria)

Para evitar erros de "Acesso Negado" em pastas restritas, o parâmetro /B instrui o Robocopy a usar os privilégios de backup do Windows, ignorando as permissões NTFS (ACLs) que negariam a leitura ao usuário comum. De acordo com o guia da PDQ sobre Robocopy, ambos os parâmetros exigem que o prompt seja executado como Administrador.

Diagrama de transferência de permissões NTFS via Robocopy

Performance e Confiabilidade: O Debate sobre /MT e /Z

A otimização de velocidade e resiliência de rede envolve trade-offs técnicos importantes, especialmente no uso de multithreading e retomada de pacotes.

Saturação por Multithreading (/MT)

O parâmetro /MT:n habilita cópias simultâneas. Se o valor n for omitido, o padrão é utilizar 8 threads, podendo chegar ao limite máximo suportado de 128 threads. A controvérsia na área reside no hardware: enquanto o uso de 64 ou 128 threads maximiza a transferência em arrays de SSDs NVMe, aplicá-lo em discos rígidos mecânicos (HDDs) causa thrashing (excesso de movimentação da agulha de leitura), degradando severamente a performance.

Modo Reiniciável (/Z) vs. Throughput

O parâmetro /Z (Restartable mode) grava blocos de recuperação nos arquivos. Se a rede cair, o Robocopy retoma do bloco exato onde parou. Conforme documentado pela referência da InventiveHQ, embora vital para cópias via WAN ou VPN, o /Z reduz o throughput devido ao overhead de rastreamento. Em redes LAN Gigabit ou 10G altamente estáveis, muitos especialistas optam por omitir o /Z para priorizar a velocidade bruta.

Como Evitar os Erros Mais Críticos no Robocopy

Um dos maiores mitos sobre a ferramenta é a crença de que o Robocopy faz backup de arquivos abertos nativamente. Isso é falso. O Robocopy não aciona o VSS (Volume Shadow Copy Service) por conta própria. Se um banco de dados SQL ou um arquivo PST do Outlook estiver em uso, o Robocopy falhará. Para esses casos, é necessário um script auxiliar que gere um snapshot VSS antes da execução da cópia.

Além disso, antes de iniciar uma grande migração e espelhamento, muitos administradores optam por rodar chkdsk, sfc e DISM para garantir a integridade lógica do sistema de origem, especialmente se o disco estiver apresentando falhas mecânicas, cenário onde o uso do ddrescue é mais indicado antes da cópia em nível de arquivo.

Perguntas Frequentes

O Robocopy consegue copiar arquivos abertos ou em uso?
Não nativamente. O Robocopy não possui integração automática com o VSS (Volume Shadow Copy Service). Se um arquivo estiver em uso exclusivo por outra aplicação, o Robocopy entrará em loop de erro até que o arquivo seja liberado ou o limite de repetições (/R) seja atingido.

Qual é o perigo de usar o parâmetro /MIR no Robocopy?
O principal perigo é a natureza destrutiva do /MIR no diretório de destino. Por incorporar a função /PURGE, ele apagará permanentemente qualquer arquivo no destino que não exista mais na origem. Inverter os caminhos de origem e destino pode resultar em perda total de dados.

Por que meu backup com Robocopy trava indefinidamente em um arquivo?
Isso ocorre porque os valores padrão da Microsoft para os parâmetros de tentativa são de 1.000.000 de repetições (/R) com 30 segundos de pausa entre elas (/W). É fundamental declarar explicitamente limites menores no script, como /R:3 /W:5.

Fontes

Postar um comentário

0 Comentários

Contact form