É segunda-feira, 08:12, na Loja Bento (cenário ilustrativo): a partilha de Relatórios do servidor FS01 tem de existir também no NAS02, e a cópia manual que alguém fazia ao acaso não é solução de sysadmin — é um rasto que alguém se esquece de actualizar após uma semana de trabalho intenso. Em qualquer parque Windows, do Windows 10 ao Windows Server 2025 e ao Azure Local, a resposta de sistema chama-se Robocopy — o Robust File Copy que vem de origem com a própria linha de comandos. Copia árvores inteiras, preserva atributos e — com /COPYALL — as ACLs, retoma com /Z um ficheiro interrompido no sítio onde ficou e devolve um código de saída que um script consegue decidir — tudo sem instalar nada.
Este guia percorre as decisões que separam uma cópia limpa de um desastre: /E contra /MIR (e porque é que o espelho apaga), os limites de /R e /W por omissão, o multithread de /MT, os registos com /LOG+, as exclusões com /XD e /XF, a tabela de exit codes e o agendamento com schtasks — sempre com comando, saída no formato real e a decisão que tiras de cada um.
💡 Em Resumo
O Robocopy é a ferramenta nativa do Windows para copiar e espelhar ficheiros entre directórios locais e partilhas SMB. O /MIR replica a árvore exacta — e apaga no destino o que já não existe na origem: valida sempre com /L antes. Não confies nas omissões de /R e /W — um milhão de tentativas com 30 segundos de espera — e limita logo com /R:2 /W:5. /MT:16 reparte a cópia por threads, /LOG+ guarda a conta de cada corrida e o if errorlevel 8 decide no script — a partir de 8 é falha.
Neste artigo
- 1. Primeira cópia — sintaxe e a conta no fim
- 2. Copiar ou espelhar — o perigo do /MIR
- 3. /R e /W — os valores por omissão que apanham todos
- 4. /MT — cópias em paralelo
- 5. Registos que ficam — /LOG+ e /UNILOG+
- 6. Exclusões — /XD, /XF e ficheiros ocultos
- 7. xcopy ou Robocopy?
- 8. Exit codes — o que cada número diz
- 9. Agendar com schtasks
- 10. Erros Comuns
- 11. Checklist
- 12. Artigos Relacionados
1. Primeira cópia — sintaxe e a conta no fim
A sintaxe cabe numa linha: origem, destino, os ficheiros — *.* por omissão — e as opções. O primeiro comando da Loja Bento copia a árvore de Relatórios do FS01 para a partilha de backup no NAS02, a dezasseis threads e com um limite de tentativas sóbrio:
robocopy \\FS01\Partilhas\Relatorios \\NAS02\Backup\Relatorios /MT:16 /R:2 /W:5 /LOG:C:\Logs\relatorios.log
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : segunda-feira, 9 de Novembro de 2026 21:00:02
Source : \\FS01\Partilhas\Relatorios\
Dest : \\NAS02\Backup\Relatorios\
Files : *.*
Options : *.* /DCOPY:DA /COPY:DAT /MT:16 /R:2 /W:5 /LOG:C:\Logs\relatorios.log
-------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 98 34 64 0 0 1
Files : 1204 489 715 0 0 7
Bytes : 425.7 m 388.4 m 33.1 m 0 0 4.2 m
Times : 0:01:18 0:01:17
Speed : 5044155.8 Bytes/sec.
Speed : 302.65 MegaBytes/min.
Ended : segunda-feira, 9 de Novembro de 2026 21:01:19
Saída ilustrativa — o formato de colunas é o real, e sai em inglês mesmo em Windows em português.
O trabalho termina com a conta do dia — colunas Total, Copied, Skipped, Mismatch, FAILED e Extras sobre as linhas Dirs, Files, Bytes e Times. Esta corrida copiou 489 ficheiros (388,4 MB), saltou os 715 que já estavam iguais no destino e apontou 7 Extras — ficheiros que só existem no NAS02. O código de saída é 3 — o 1 de cópia completa somado ao 2 das 7 Extras apagadas — e a corrida foi um sucesso: por baixo de 8, o Robocopy não falhou. Por omissão o Robocopy copia dados, atributos e carimbos de tempo — o /COPY:DAT que vês nos Options — e os directórios ficam com data e atributos por /DCOPY:DA. A tabela completa destes números está na secção 8.
2. Copiar ou espelhar — o perigo do /MIR
A decisão mais importante do artigo cabe aqui. O /E copia tudo — subdirectórios incluídos, vazios à vontade — e nunca apaga nada no destino. O /MIR é /E mais /PURGE: replica a árvore exacta e elimina no destino o que já não existe na origem. É isso que confere ao espelho o valor de réplica fiel — e é o que destrói um backup se a origem vier errada. Aponta uma pasta vazia a uma partilha com /MIR e a partilha fica vazia.
A defesa do sysadmin é o /L — list only: o Robocopy percorre a origem e o destino, escreve o que faria e não copia nem apaga um byte. Antes de espelhar os Relatórios para o NAS02:
robocopy \\FS01\Partilhas\Relatorios \\NAS02\Backup\Relatorios /MIR /L
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : segunda-feira, 9 de Novembro de 2026 20:55:41
Source : \\FS01\Partilhas\Relatorios\
Dest : \\NAS02\Backup\Relatorios\
Files : *.*
Options : *.* /L /MIR /DCOPY:DA /COPY:DAT /R:1000000 /W:30
-------------------------------------------------------------------------------
*EXTRA Dir -1 Antigos2019\
New File 986 Q3\resumo.csv
Newer 20480 Q4\fecho.xlsx
*EXTRA File 4102 Antigos2019\fecho2019.xlsx
-------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 98 34 64 0 0 1
Files : 1204 411 793 0 0 1
Bytes : 912.1 m 405.2 m 506.9 m 0 0 4.1 k
Times : 0:00:00 0:00:00
Ended : segunda-feira, 9 de Novembro de 2026 20:55:52
Lê os Extras antes de autorizar o espelho: o directório Antigos2019 e o ficheiro de 2019 — que só existem no NAS02 — seriam apagados pelo /MIR real. Se o destino guarda conteúdo próprio, decide entre preservá-lo com /XD (os directórios excluídos ficam fora da operação — purge incluído) ou aceitar a eliminação. Quando a listagem confere com o que queres, corre o mesmo comando sem o /L. Notas de sistema que valem ler duas vezes: /E com /PURGE preserva a segurança do directório de destino, ao passo que o /MIR a sobrescreve — e /MIR contra a raiz de um volume já não toca a pasta System Volume Information: a referência documenta que o Robocopy salta essa pasta nos directórios de topo da origem e do destino. Para mover em vez de espelhar, o /MOV apaga da origem cada ficheiro copiado e o /MOVE faz o mesmo a ficheiros e directórios.
3. /R e /W — os valores por omissão que apanham todos
Nunca deixes as tentativas por omissão num espelho. Por omissão, o Robocopy retenta cada ficheiro falhado um milhão de vezes e espera 30 segundos entre tentativas: um destino SMB desligado à hora da tarefa mantém o comando preso — um milhão de tentativas a 30 s dá 347 dias por ficheiro falhado. A solução cabe numa linha:
| Opção | O que faz | Por omissão |
|---|---|---|
/r:<n> |
Número de tentativas em ficheiros que falham a cópia | um milhão |
/w:<n> |
Tempo de espera entre tentativas, em segundos | 30 |
/reg |
Grava os valores de /r: e /w: como padrão no registo | — |
/tbd |
Espera que os nomes de partilha fiquem definidos (retry erro 67) | — |
Duas tentativas e cinco segundos de espera — o padrão que a própria Microsoft usa nos exemplos da página de referência:
robocopy C:\Users\Admin\Records D:\Backup /MIR /R:2 /W:5 /LOG:C:\Logs\Backup.log
Se quiseres que /R:2 /W:5 fique como padrão da tua sessão sem repetir o switch em cada comando, grava os valores uma vez com /REG — a Microsoft não documenta o local, e a referência prática (SS64) situa-o por utilizador, em HKCU\Software\Microsoft\ResKit\Robocopy: uma tarefa do Agendador a correr como SYSTEM não herda o que gravaste na tua sessão, por isso nos scripts da tarefa passa /R /W no comando.
4. /MT — cópias em paralelo
Em NTFS local e SMB sobre rede forte, /MT reparte a cópia por threads — entre 1 e 128, 8 threads por omissão — e devolve minutos em árvores de ficheiros pequenos: milhares de PDFs, folhas de cálculo e fotos da Loja Bento. Duas regras da página de referência: o multithread não combina com /ipg nem com /efsraw, e convém redireccionar o output para /LOG — além de limpar a consola de contas de progresso, a execução fica mais rápida:
robocopy \\FS01\Partilhas\Fotos \\NAS02\Backup\Fotos /E /MT:16 /R:2 /W:5 /NP /LOG:C:\Logs\fotos.log
Se precisares de ver a consola e manter o log ao mesmo tempo, o /TEE duplica o output nos dois sítios. O /NP esconde a conta de progresso por ficheiro — o log fica com nomes e estatísticas, não com percentagens.
5. Registos que ficam — /LOG+ e /UNILOG+
Um espelho sem log é uma caixa preta — impossível dizer o que apagou, quando e quanto. O /LOG: sobrescreve o ficheiro de cada corrida — o /LOG+: acrescenta cada execução ao fim do ficheiro — é o que a tarefa agendada da secção 9 usa. Para nomes com acentos e outros caracteres fora do ASCII, /UNILOG: e /UNILOG+: gravam o mesmo resumo em Unicode:
robocopy \\FS01\Partilhas\Dossiers \\NAS02\Backup\Dossiers /MIR /MT:16 /R:2 /W:5 /NP /UNILOG+:C:\Logs\dossiers-2026-11-11.log
Acrescenta a data ao nome do ficheiro e o histórico do mês inteiro cabe numa pasta — cada corrida termina com a tabela de estatísticas completa: Total, Copied, Skipped, Mismatch, FAILED, Extras.
6. Exclusões — /XD, /XF e ficheiros ocultos
Três filtros cobrem quase tudo o que um espelho de partilhas precisa de deixar de fora. O /XD exclui directórios por nome ou caminho — os excluídos ficam fora da operação inteira, e o purge do /MIR não os apaga no destino. O /XF exclui ficheiros, com wildcards * e ?. E uma diferença silenciosa face ao xcopy: o Robocopy copia ficheiros ocultos e de sistema por omissão — para deixá-los fora usa /XA:H, o atributo hidden dos códigos RASHCNETO:
robocopy \\FS01\Partilhas \\NAS02\Backup /E /XA:H /XJ /XD Antigos2019 Temp /XF *.tmp Thumbs.db
O /XJ fica a dever uma nota: por omissão o Robocopy segue junction points — e pode entrar em ciclos numa árvore com elos internos —, ao passo que com este switch os salta sem expandir as ligações. Se precisares do filtro ao contrário — só copiar o que tem o atributo de cópia pendente, para backups incrementais —, usa o /A — e o /M quando queres que a cópia limpe o atributo no fim, para incrementais verdadeiros — o /IA e o /XA são filtros genéricos pelos atributos RASHCNETO.
7. xcopy ou Robocopy?
O xcopy continua na máquina e continua a copiar ficheiros e directórios com subdirectórios — /s e /e —, tem o /z para ficheiros de rede em modo restartable e o /h para levar ficheiros ocultos e de sistema que, por omissão, deixa para trás. O que falta é tudo o que um espelho de partilhas usa a sério — e é aqui que o Robocopy ganha o lugar na rotina:
| Capacidade | xcopy | robocopy |
|---|---|---|
| Espelho com purge (/MIR) | não existe | /E mais /PURGE |
| Multithread (/MT) | não existe | 1-128 threads, 8 por omissão |
| Ficheiros ocultos e de sistema | só com /h | por omissão — excluir com /XA:H |
| Retomar cópia interrompida (/Z) | ficheiros de rede | qualquer cópia — /Z, ou /ZB com modo backup |
| Filtro por atributos e datas | flag de cópia pendente (/a, /m) e /d com data | /IA e /XA (RASHCNETO), /MAXAGE e /MINAGE |
| Log com estatísticas | sem ficheiro de log | /LOG+ /UNILOG+ com resumo completo |
| Exit codes 0-16 com significado combinado | exit codes 0-5 documentados (0 sem erros, 1 sem ficheiros, 2 interrompido, 4 inicialização, 5 erro de escrita) | código 0-8+ — ver secção 8 |
8. Exit codes — o que cada número diz
O Robocopy termina com um número que conta a história da corrida — e não é uma lista de erros: 1 é literalmente sucesso completo. Um script que decide por máquina compara o valor com as regras seguintes — qualquer valor igual ou superior a 8 indica pelo menos uma falha na cópia:
| Valor | Significado |
|---|---|
| 0 | Nada copiado, sem falhas nem desajustes — os ficheiros já existiam no destino e a cópia foi saltada |
| 1 | Todos os ficheiros copiados com sucesso |
| 2 | Há ficheiros extra no destino que não existem na origem — nada foi copiado, sem falhas |
| 3 | Alguns ficheiros copiados e ficheiros extra presentes — sem falhas |
| 4 | Desajustes detectados sem cópias nem extras — nada copiado, sem falhas |
| 5 | Alguns ficheiros copiados e alguns desajustados — sem falhas |
| 6 | Ficheiros extra e desajustados presentes — nada copiado, sem falhas |
| 7 | Ficheiros copiados, desajustados e extra presentes |
| 8 | Vários ficheiros não foram copiados |
Os códigos 9 a 15 combinam uma falha de cópia (8) com os extras e desajustes acima — 9, por exemplo, é cópia parcial com falhas — e o 16 é um erro fatal: o Robocopy não copiou ficheiros e abortou a corrida.
robocopy \\FS01\Partilhas\Certificados \\NAS02\Backup\Certificados /MIR /R:2 /W:5
if errorlevel 8 echo FALHA NA COPIA & goto :alerta
Os valores combinam-se — 3 significa copiado mais extra —, por isso um script que só aceita 0 e 1 como tudo-bem perde corridas válidas com Extras. A decisão da Loja Bento: 0 a 7 passa, 8 ou mais dispara o alerta.
9. Agendar com schtasks
Um espelho só vale algo se correr sem ninguém à mesa. Agenda a corrida com o próprio schtasks — às 02:00, com a conta SYSTEM para rodar sem sessão aberta:
schtasks /Create /TN KB-Espelho-Relatorios /SC DAILY /ST 02:00 /RU SYSTEM /RL HIGHEST /TR C:\Scripts\espelho-relatorios.cmd
SUCCESS: The scheduled task "KB-Espelho-Relatorios" has successfully been created.
Num Windows Server em português a mensagem de sucesso sai traduzida — o teste é mesmo a tarefa aparecer no Agendador de Tarefas. O script que ela chama é uma corrida com log mais a decisão por exit code:
robocopy \\FS01\Partilhas\Relatorios \\NAS02\Backup\Relatorios /MIR /MT:16 /R:2 /W:5 /NP /LOG+:C:\Logs\relatorios.log
if errorlevel 8 exit /b 8
No dia seguinte, abre o log — a tabela final diz quantos Extras e quantos FAILED — e confirma no Agendador que a tarefa rodou. Um detalhe que engana: um espelho bem-sucedido termina com 0 quando nada mudou e 3 quando copiou e purgou Extras — e só a partir de 8 é falha: é o if errorlevel 8 dentro do script que decide, não o número de saída da tarefa.
10. Erros Comuns
São estes os passos em que um espelho de partilhas arde — na prática da Loja Bento, os três primeiros são os que já apanharam sysadmins com anos de ofício:
- /MIR com a origem trocada ou vazia — o purge apaga o destino sem aviso. Valida com /L e confirma os Extras antes de qualquer espelho real.
- Herdar os valores por omissão de /R e /W — um milhão de tentativas a 30 segundos é uma tarefa presa 347 dias por ficheiro. /R:2 /W:5 e assunto arrumado.
- Tratar exit code 1 como erro — 1 é sucesso completo e 3 é sucesso com Extras — a partir de 8 é falha. Scripts que só aceitam 0 marcam corridas boas como falhadas.
- Usar /MT sem /LOG — a consola enche-se de contas de progresso e a leitura fica lenta. Redirecciona para o log e adiciona /NP.
- Copiar da raiz de um volume — o directório de destino adopta os atributos hidden e system durante a cópia da raiz. Confina o espelho a subdirectórios.
- Seguir junctions sem /XJ — numa árvore com elos internos, a cópia entra em ciclo e nunca termina.
- Espelhar destino com conteúdo próprio — os Extras do dry-run de /L são os próximos ficheiros apagados — decide antes, com /XD.
11. Checklist
- Validas a operação com
/Le conferes os Extras — nada apagado à revelia. - Limitas
/R:2 /W:5, ou gravas o padrão por utilizador com /REG — tarefa SYSTEM não herda. - Redireccionas para
/LOG+— com /NP se usas /MT — e acrescentas a data ao nome do log. - Confinas o espelho a subdirectórios — nunca à raiz de um volume.
- Excluis com /XD e /XF o que não é negócio, e /XA:H e /XJ o que não é conteúdo.
- Fechas o script com
if errorlevel 8e um alerta para o sysadmin. - Agendas com schtasks e verificas o log no dia seguinte.
12. Artigos Relacionados
- Partilhas SMB e permissões NTFS no Windows Server — as ACLs que o Robocopy copia quando pedes /COPYALL ou /COPY:DATSOU.
- DFS Namespaces e DFS Replication no Windows Server 2026 — Guia Técnico para PME — a replicação multi-sítio quando o espelho passa ao nível de empresa.
- Dia 14: Backups e Recuperação em Linux — rsync e BorgBackup — o equivalente do lado Linux, com a mesma filosofia de espelho e log.
E quando o trabalho não é espelhar mas migrar um file server inteiro — partilhas, identidade e atributos —, o Storage Migration Service do Windows Admin Center faz a migração completa — o Robocopy fica para cópias e espelhos dirigidos por script.