Frequently Asked Questions

FAQs

Robocopy fa parte del Windows Resource Kit, che è liberamente scaricabile dal sito di Microsoft insieme a tutti gli altri programmi che lo compongono. Qui di seguito propongo l’elenco della maggior parte delle opzioni (quelle più utilizzate) con una loro breve descrizione:

Sintassi:
ROBOCOPY cartella_origine cartella_di_destinazione [file_da_copiare] [opzioni]
Nota: file_da_copiare = una lista di file o una wildcard (esempio: *.doc). Default: *.*

Opzioni relative alla cartella/file di origine:
/S : Copia le sottocartelle
/E : Copia le sottocartelle, incluse quelle vuote
/COPY:flag[s] : Specifica cosa copiare (default è /COPY:DAT): D=Data, A=Attributes, T=Timestamps S=Sicurezza=NTFS ACLs, O=Info proprietario, U=aUditing info).
/SEC : Copia i file con SECurity (equivalente a /COPY:DATS)
/DCOPY:T : Copia il Timestamps Directory
/COPYALL : Copia tutte le info del file (equivalente a /COPY:DATSOU).
/NOCOPY : Copia di nessuna info sui file (molto utile assieme all’opzione /PURGE).
/A : Copia i soli file con l’attributo archivio.
/M : come /A, ma rimuove l’attributo archivio dal file origine.
/LEV:n : Copia solo gli n livelli superiori dell’albero delle cartelle.
/MAXAGE:n : Età massima dei file (in giorni) – Esclude i file più vecchi di n giorni/data (se n < 1900 allora n = numero di giorni altrimenti n = data nel formato YYYYMMDD).
/MINAGE:n : Età minima dei file (in giorni) – Esclude i file più recenti di n giorni/data (se n < 1900 allora n = numero di giorni altrimenti n = data nel formato YYYYMMDD).

Opzioni di copia:
/L : Nessuna azione di copia, produce solo un elenco di file
/MOV : Sposta i file (li cancella dalla cartella origine dopo la copia).
/MOVE : Sposta file e cartelle (li cancella dalla cartella origine dopo la copia).
/Z : copia i file in “restartable mode” (significa che Robocopy scriverà un record di recovery all’interno dei file incompleti, in modo che se l’operazione viene interrotta, una esecuzione futura della utility possa riprendere il lavoro di copia dal punto in cui era stata interrotta, anzichè ripetere daccapo l’intera operazione. Molto utile quando si copiano file di grosse dimensioni).
/B : Copia i file in “backup mode” (autorizza Robocopy a sovrascrivere i permessi di file e cartelle).
/ZB : Copia i file utilizzando “restartable mode”; se si ottiene un errore di “accesso negato” allora viene utilizzato il “backup mode”.
/R:n : Numero di tentativi in caso di errore – default è 1 milione.
/W:n : Intervallo di tempo in secondi tra i vari tentativi – default è 30 secondi.
/REG : Salva i parametri /R:n e /W:n nel registro di sistema come impostazioni di default.
/TBD : Attende per nomi di condivisioni non ancora definiti (“retry error 67″).

Opzioni relative alla cartella/file di destinazione:
/A+:[RASHCNET] : Imposta l’attributo file sui file di destinazione
/A-:[RASHCNET] : Rimuove l’attributo file sui file di destinazione
___ Attributi File [RASHCNET]:
___ R – Read only
___ A – Archive
___ S – System
___ H – Hidden
___ C – Compressed
___ N – Not content indexed
___ E – Encrypted
___ T – Temporary
/FAT : Crea i file di destinazione con nomi nel formato 8.3 FAT (8 caratteri per il nome + 3 per l’estensione).
/PURGE : Elimina dalla cartella destinazione i file e le cartelle che non sono più presenti nell’origine.
/CREATE : Crea la struttura delle cartelle.
/MIR : Crea una copia esatta (mirror) di una cartella e delle sue sottocartelle – equivalente all’utilizzo delle opzioni /PURGE più /E.

Opzioni relative al logging (registrazione degli eventi)
/L : Nessuna copia, produce solo un elenco di file
/NP : No Progress – Non mostra la percentuale di avanzamento dell’operazione.
/LOG:logfile : Scrive il log (elenco degli eventi) nel file di nome “logfile” sovrascrivendo il file di log eventualmente già presente.
/LOG+:logfile : Scrive il log nel file di nome “logfile” aggiungendo l’output al file di log eventualmente già presente.
/TS : Include il Time Stamp dei file di origine nel log.
/FP : Include il percorso completo dei file nel log.
/NS : Non registra nel log la dimensione dei file.
/NC : Non registra nel log la classe dei file.
/NFL : Non registra nel log il nome dei file.
/NDL : Non registra nel log il nome delle cartelle.
/TEE : Mostra l’output del log anche a video.
/NJH : Non registra nel log l’Header del lavoro di copia eseguito.
/NJS : Non registra nel log il riepilogo del lavoro di copia eseguito.

Opzioni per la modalità di copia ripetuta (per chi vuole utilizzare un’alternativa all’utilità di pianificazione)
/MON:n : Tiene traccia delle modifiche ai file origine e riesegue la copia quando si sono verificati più di n cambiamenti.
/MOT:m : Tiene traccia delle modifiche ai file origine e riesegue la copia quando sono trascorsi più di m minuti dal primo cambiamento.
/RH:hhmm-hhmm : Orari nei quali può essere ripetuta una nuova operazione di copia.

Note
- Robocopy non esegue la copia di file bloccati perchè in uso da altri utenti o applicazioni; in questi casi, per velocizzare l’esecuzione del comando, è meglio limitare il numero di tentativi di copia con l’opzione /R:0 .
- Robocopy accetta percorsi UNC (es.: \\NomeComputer\Cartella o \\IndirizzoIPComputer\Cartella) con lunghezza superiore anche ai 256 caratteri previsti.
- Per eseguire Robocopy con un account utente senza diritti di amministrazione, occorre che quell’utente abbia impostato i permessi anche per l’esecuzuione delle operazioni di backup.
- Per copiare le informazioni di sicurezza sono richiesti anche i permessi di controllo oltre, ovviamente, anche ai permessi di accesso almeno in lettura dei file e delle cartelle di origine.

Esempi
Copiare dei file *.doc da un server ad un altro, evitando la copia dei file già presenti nella destinazione:
ROBOCOPY \\Server1\ORIGINE  \\Server2\DESTINAZIONE *.doc /S

Ottenere un elenco dei file nella cartella C:\ESEMPIO la cui dimensione sia maggiore di 32 MBytes:
ROBOCOPY C:\ESEMPIO /MAX:33554432 /L

Spostare i file più vecchi di 14 giorni dalla cartella C:\ESEMPIO alla cartella C:\DESTINAZIONE:
ROBOCOPY C:\ESEMPIO C:\DESTINAZIONE /move /minage:14

Effettuare il Backup di un Server
Il seguente script copia i dati da una cartella presente in Server1 a una presente in Server2.
Se si esegue regolarmente una sincronizzazione tra sorgente e destinazione, Robocopy copierà solamente quei file che hanno subìto modifiche (cioè cambiamenti nel Time Stamp o nella dimensione)

@ECHO OFF
SETLOCAL

SET _source=\\Server1\e$\Folder1

SET _dest=\\Server2\e$\Folder2

SET _what=/COPYALL /B /SEC /MIR
:: /COPYALL :: COPY ALL file info
:: /B :: copy files in Backup mode.
:: /SEC :: copy files with SECurity
:: /MIR :: MIRror a directory tree

SET _options=/R:0 /W:0 /LOG:MyLogfile.txt /NFL /NDL
:: /R:n :: number of Retries
:: /W:n :: Wait time between retries
:: /LOG :: Output log file
:: /NFL :: No file logging
:: /NDL :: No dir logging

ROBOCOPY %_source% %_dest% %_what% %_options%