Contenuti




Robocopy: guida completa all'uso

Opzioni, sintassi, logging e best practice per copie massive su Windows


Robocopy: guida completa all’uso

Robocopy (Robust File Copy) e' lo strumento standard di Windows per copie affidabili, sincronizzazioni e migrazioni di grandi moli di dati. Questa guida e' tecnica: sintassi, opzioni complete in tabella, esempi reali e suggerimenti operativi per ambienti enterprise.

Sintassi essenziale

1
robocopy <source> <destination> [file [file]...] [options]
  • <source> e <destination> possono essere path locali o UNC (SMB).
  • file e' un filtro (es. *.bak). Per piu' filtri aggiungi piu' file.
  • Robocopy restituisce exit code significativi: vedi sezione dedicata.

Opzioni complete (tabella)

Le opzioni seguenti sono quelle del comando robocopy /? nelle versioni moderne di Windows. In contesti legacy, alcune opzioni possono non essere disponibili: verifica sempre con robocopy /? sulla macchina target.

Categoria Opzione Descrizione
Copia /S Copia le sottodirectory, escludendo le vuote.
Copia /E Copia tutte le sottodirectory, incluse le vuote.
Copia /LEV:n Limita la profondita' a n livelli.
Copia /Z Copia in modalita' restartable.
Copia /B Copia in modalita' Backup (richiede privilegi).
Copia /ZB Usa /Z, se fallisce usa /B.
Copia /J Copia con I/O non bufferizzato (utile per file grandi).
Copia /COPY:copyflags Seleziona cosa copiare. Flags: D (dati), A (attributi), T (timestamp), S (ACL), O (owner), U (audit). Default DAT.
Copia /DCOPY:copyflags Seleziona cosa copiare per le directory. Flags: D (dati), A (attributi), T (timestamp). Default DA.
Copia /SEC Copia dati + attributi + ACL (equivale a /COPY:DATS).
Copia /COPYALL Copia tutto (equivale a /COPY:DATSOU).
Copia /NOCOPY Non copia informazioni file (utile con /PURGE).
Copia /SECFIX Corregge le ACL anche sui file saltati.
Copia /TIMFIX Corregge i timestamp anche sui file saltati.
Copia /PURGE Elimina in destinazione cio' che non esiste in sorgente.
Copia /MIR Mirror: /E + /PURGE.
Copia /MOV Sposta i file (copia + delete).
Copia /MOVE Sposta file e directory (copia + delete).
Copia /A+:[RASHCNET] Aggiunge attributi ai file copiati.
Copia /A-:[RASHCNET] Rimuove attributi dai file copiati.
Copia /CREATE Crea solo struttura directory e file vuoti.
Copia /FAT Crea file in formato 8.3 (FAT).
Copia /256 Disabilita il supporto path lunghi > 256 caratteri.
Copia /MON:n Monitora sorgente e rilancia se > n cambiamenti.
Copia /MOT:m Monitora sorgente e rilancia ogni m minuti se cambiano file.
Copia /RH:hhmm-hhmm Esegue solo nell’intervallo orario indicato.
Copia /PF Valuta le ore di esecuzione per ogni singolo file.
Copia /IPG:n Inter-packet gap in ms per limitare banda.
Copia /SL Copia i link simbolici come link (non il target).
Copia /MT[:n] Copia multithread con n thread (default 8, max 128).
Copia /NODCOPY Non copia info delle directory (override di /DCOPY).
Copia /NOOFFLOAD Disabilita la Copy Offload (es. SMB offload).
Copia /COMPRESS Richiede SMB compression durante il trasferimento.
Copia /SPARSE Abilita la creazione di file sparse.
Copia /IOmaxsize:n I/O massimo per file (dimensione in byte).
Copia /IOminsize:n I/O minimo per file (dimensione in byte).
Copia /EFSRAW Copia file EFS in modalita' RAW.
Selezione /A Copia solo file con attributo Archive.
Selezione /M Copia file con Archive e resetta l’attributo.
Selezione /IA:[RASHCNETO] Include solo file con uno degli attributi indicati.
Selezione /XA:[RASHCNETO] Esclude file con uno degli attributi indicati.
Selezione /XF file [file]... Esclude file per nome o path.
Selezione /XD dir [dir]... Esclude directory per nome o path.
Selezione /XC Esclude i file gia' presenti in destinazione.
Selezione /XN Esclude i file piu' nuovi in sorgente.
Selezione /XO Esclude i file piu' vecchi in sorgente.
Selezione /XX Esclude file e directory extra in destinazione.
Selezione /XL Esclude file e directory “solitari” (solo in sorgente).
Selezione /IS Include anche i file identici.
Selezione /IT Include i file “tweaked” (timestamp identico ma attributi diversi).
Selezione /MAX:n Esclude file oltre n byte.
Selezione /MIN:n Esclude file sotto n byte.
Selezione /MAXAGE:n Esclude file piu' vecchi di n giorni o data.
Selezione /MINAGE:n Esclude file piu' recenti di n giorni o data.
Selezione /MAXLAD:n Esclude file non usati negli ultimi n giorni.
Selezione /MINLAD:n Esclude file usati negli ultimi n giorni.
Selezione /XJ Esclude i junction point (file e directory).
Selezione /XJD Esclude solo junction point di directory.
Selezione /XJF Esclude solo junction point di file.
Selezione /FFT Usa la granularita' FAT (2s) per i timestamp.
Selezione /DST Compensa differenze di 1h dovute al DST.
Retry /R:n Numero di retry su errori di copia.
Retry /W:n Attesa in secondi tra un retry e l’altro.
Retry /REG Salva /R e /W nel registro come default.
Retry /TBD Attende che le share diventino disponibili.
Logging /L Modalita' lista: non copia, non cancella.
Logging /X Riporta tutti i file extra, non solo quelli selezionati.
Logging /V Output verboso.
Logging /TS Mostra timestamp file sorgente.
Logging /FP Mostra i path completi.
Logging /BYTES Mostra dimensioni in byte.
Logging /NS Non mostra dimensioni.
Logging /NC Non mostra classi di file.
Logging /NFL Non mostra i nomi file.
Logging /NDL Non mostra i nomi directory.
Logging /NP Non mostra la percentuale di avanzamento.
Logging /ETA Mostra ETA.
Logging /LOG:file Log su file (sovrascrive).
Logging /LOG+:file Log su file (append).
Logging /UNILOG:file Log Unicode (sovrascrive).
Logging /UNILOG+:file Log Unicode (append).
Logging /TEE Output sia su console sia su log.
Logging /NJH Non mostra job header.
Logging /NJS Non mostra job summary.
Job /JOB:jobname Carica opzioni da job file.
Job /SAVE:jobname Salva opzioni in job file.
Job /QUIT Esce dopo avere processato la riga (usato con /SAVE).
Job /NOSD Nessuna directory sorgente nel job.
Job /NODD Nessuna directory destinazione nel job.

Esempi operativi

Copia base con logging

1
robocopy D:\Dati \\NAS\Backup\Dati /E /Z /R:3 /W:5 /LOG+:C:\Logs\robocopy_dati.log /TEE

Mirror completo con esclusioni

1
robocopy D:\FileServer \\NAS\Mirror /MIR /XJ /XD "D:\FileServer\Temp" /XF *.tmp /R:2 /W:2

Copia con ACL e proprieta'

1
robocopy D:\Share \\NAS\Share /MIR /COPY:DATSOU /DCOPY:DAT /SECFIX

Migrazione notturna con finestra oraria

1
robocopy D:\Archivio \\NAS\Archivio /E /ZB /MT:32 /RH:2300-0530 /PF /R:5 /W:10

Dry run (simulazione)

1
robocopy D:\Dati \\NAS\Dati /MIR /L /FP /BYTES /LOG:C:\Logs\robocopy_simulazione.log

Consigli per grandi moli di dati

  • Usa /MT con criterio: 16-32 thread sono un buon compromesso su LAN stabili; oltre, valuta impatto su CPU e storage.
  • Per file grandi, preferisci /J: evita buffering e riduce la pressione sulla cache di sistema.
  • Evita loop su junction: abilita /XJ o /XJD quando copi profili o volumi con reparse point.
  • Ottimizza retry: valori moderati (/R:3 /W:5) evitano attese infinite in caso di errori persistenti.
  • Proteggi le ACL: per migrazioni SMB usa /COPY:DATSOU e /DCOPY:DAT, e valuta /SECFIX in una seconda passata.
  • Regola la banda: /IPG su WAN lente, oppure pianifica con /RH + /PF.
  • NAS e file system eterogenei: abilita /FFT quando i timestamp non hanno la stessa granularita'.
  • Log sempre: /LOG+ + /TEE per tracciabilita' e audit.

Exit code (interpretazione rapida)

Robocopy non usa 0/1 tradizionali: l’exit code e' una bitmask. In pratica:

Codice Significato operativo
0 Nessun file copiato, nessun errore.
1 Copiati file correttamente.
2 File extra presenti (in destinazione).
3 Copiati file + file extra presenti.
5 Mismatch di file/directory.
6 Copiati file + mismatch.
7 Copiati file + extra + mismatch.
8 Errori durante la copia.
>8 Fallimento grave.

Note operative rapide

  • Per mirror continui, preferisci job salvati (/SAVE) e usa Task Scheduler.
  • Per copy only senza modificare destinazione, evita /PURGE e /MIR.
  • Per dati critici, esegui una passata di verifica con /L e compara i log.