Robocopy: errore codice 6 con unità UDF

Sintomi: utilizzando robocopy per eseguire i backup in un’unità con file system UDF, alcuni file non risultano copiati con errore codice 6 (0x00000006).

Soluzione: utilizzare robocopy con un utente che possiede i privilegi di backup (membro di Backup Operators), con il comando:

robocopy [origine] [destinazione] /MIR /ZB /R:0 /W:0

Dettagli: l’utility robocopy.exe (Robust File Copy) è contenuta nel Resource Kit di Windows Server 2003 e nativamente in Windows Vista e Windows Server 2008 ed è normalmente utilizzata per superare le diverse limitazioni di xcopy.

La sintassi normalmente usata per il salvataggio di una cartella è:

robocopy [origine] [destinazione] /MIR

Tuttavia utilizzando questo comando con origine un’unità formattata NTFS e con destinazione un’unità formattata con il file system UDF, nel logfile o a video notiamo spesso alcuni errori durante la scrittura.

Il problema è causato dai file che contengono stream dati alternativi (Alternate Data Streams, ADS) che possono essere presenti in alcuni file NTFS. Copiando i file su file system diverso queste informazioni vanno perse, generando in alcuni casi l’errore riportato da robocopy. Il file viene comunque copiato, e l’errore riportato nel log può essere ignorato se le informazioni ADS non erano rilevanti.

Grazie all’opzione /ZB viene utilizzata la modalità riavviabile (restartable mode) combinata assieme alla modalità backup, permette di evitare la creazione di questi errori, consentendo di concentrare l’attenzione su le altre anomalie che si possono verificare nella copia.