- Robocopy
-
Robocopy
robocopy, o "Robust File Copy" (Copia de Ficheros Resistente), es un comando de replicación de directorios, disponible desde la Línea de Comandos. Formaba parte del Kit de Recursos de Windows, y se presentó como una característica estándar de Windows Vista y Windows Server 2008.
Robocopy está diseñado para la duplicación fiable de directorios y árboles. Puede garantizar que todos los atributos NTFS y propiedades son copiados, e incluye código de reinicio adicional para conexiones de red sujetas a interrupciones.
Contenido
Características
Robocopy destaca por superar a los comandos incluídos en Windows COPY y xcopy, y además:
- Puede tolerar cortes de red y continuar la copia por donde la había dejado (los ficheros incompletos se marcan con la fecha 01/01/1980 y contienen un registro de recuperación para que Robocopy sepa por dónde continuar).
- Puede copiar correctamente atributos, información del propietario, flujos alternos de datos (ADS), información de auditoría y fechas por defecto, sin la necesidad de utilizar los engorrosos parámetros de los comandos.
- Puede copiar la ACL de NTFS, (si se añade el parámetro /COPYALL), y hacer valer el "derecho de copia de seguridad" de Windows NT (/B) para que un administrador pueda copiar un directorio completo, incluyendo aquellos ficheros cuya lectura está denegada al administrador.
- Persistencia por omisión, con un número programable de reintentos automáticos si no se puede acceder a un archivo.
- Dispone de un modo "espejo", que mantiene la arborescencia sincronizada borrando archivos del destino, opcionalmente, si ya no están en el origen.
- Puede copiar grandes cantidades de ficheros que harían que con la utilidad XCOPY no se consiguiera.
- Tiene un indicador de progreso que la línea de comandos que se actualiza continuamente.
- Puede copiar archivos y carpetas con nombres largos que superen los 256 caracteres - hasta un máximo teórico de 32.000 - sin errores.[1]
- Soporta copiado multihilo (sólo en Windows 7).[2]
En particular, Robocopy no puede copiar archivos abiertos en uso por otros usuarios o aplicaciones. El presunto "modo respaldo" es un privilegio administrativo que permite a Robocopy invalidar configuraciones de permisos (en concreto, los de la ACL de NTFS) para la misión de realizar copias de seguridad. El subsistema de Windows Volume Shadow Copy es el único que puede copiar archivos abiertos mientras están en uso. Robocopy no implementa el acceso a este servicio, reduciendo su utilidad como utilidad de copia de seguridad de vólumenes en uso. Sin embargo, se pueden utilizar las utilidades
VSHADOW
oDISKSHADOW
(incluidas en Windows Server 2008) para crear instantáneas de un volumen que se podrá respaldar usando Robocopy.Por otra parte, por su diseño, la versión original de Robocopy no es capaz de replicar atributos de seguridad de archivos cuyos permisos hayan cambiado después de la replicación inicial.[3] Este comportamiento se corrigió en las versiones de Robocopy para Windows 2008 y Vista. Esto conlleva que Robocopy no se comporte igual entre distintas plataformas.[4]
La interfaz
Aunque Robocopy en sí es una herramienta de la línea de comandos, Microsoft Technet también ha suministrado una interfaz, que requiere .net Framework 2.0. Ha sido desarrollada por Derk Benisch, ingeniero de sistemas junto a grupo MSN de Microsoft.[5] Esta interfaz incluye la versión XP026 de Robocopy (para Vista).
Ejemplos de uso
Copiar el contenido de un directorio recursivamente, de c:\foo a c:\bar
robocopy C:\foo C:\bar /E
Copiar el contenido de un directorio recursivamente (/E), y copiar toda la información de los ficheros (/COPYALL, que equivale a /COPY:DATSOU, D=Datos, A=Atributos, T=Fecha, S=Seguridad=ACL de NTFS, O=Información del propietario, U=Información de auditoría), sin reintentos sobre archivos bloqueados (/R:0). Nótese que las fechas de los directorios no se restablecerán si se usa una versión más antigua que la XP026:
robocopy C:\foo C:\bar /COPYALL /E /R:0
Duplicar foo a bar, borrando cualquier fichero en bar que no esté en foo (/MIR), copiar archivos en modo reiniciable (/Z) en caso de que se pierda la conexión de red
robocopy C:\foo \\backupserver\bar /MIR /Z
Copia carpetas, no archivos
La sintaxis de Robocopy es claramente distinta de los comandos de copia normales, por el hecho de que sólo acepta nombres de carpetas, no archivos, tanto en el origen como en el destino. Nombres de ficheros y comodines (como "*.*") no se aceptan en ningún caso. Los ficheros se pueden seleccionar o excluir usando argumentos de filtrado, que sólo podrán referirse a nombres relativos de las carpetas ya seleccionadas, y sin aceptar trayectorias completas.
Por ejemplo, para copiar el archivo foo.txt del directorio c:\bar a c:\baz, se usaría la siguiente expresión
robocopy c:\bar c:\baz foo.txt
Lista parcial de parámetros de línea de comandos
La lista a continuación refleja las opciones de línea de comandos más comunes para Robocopy[6]
Opciones comunes
- /MIR
- Activa el modo espejo, borrando cualquier fichero en destino que ya no esté en origen (equivale a /E y /PURGE).
- /Z
- Copia archivos en modo reiniciable. "Reiniciable" hace mención a que Robocopy escribirá un registro de recuperación en el fichero incompleto en caso de que la operación se vea interrupida o abortada, para que una futura ejecución de Robocopy pueda continuar por donde ésta lo dejó, en lugar de comenzar otra vez desde el principio. Esto es útil para copias fiables de ficheros grandes o cantidades sobre redes inestables tales como [Red privada virtual|VPN] o Internet. Un fichero incompleto tiene el mismo tamaño que el fichero completo, y se le anota una fecha en un perido de 24 horas a partir del 01/01/1980 a las 0:00.
- /COPYALL
- Comprueba que se ha copiado la seguridad NTFS. Equivale a /COPY:DATSOU, donde D=Datos, A=Atributos, T=Fecha, S=Seguridad=ACL de NTFS, O=Información del propietario, U=Información de auditoría.
- /B
- Abre el fichero en modo backup (copia de seguridad). Permite abrir los ficheros sin restricciones de seguridad, pero requiere derechos adicionales en origen y destino.
- /ZB
- Usar modo reiniciable; si se deniega el acceso, usar modo backup.
Opciones especializadas
- /S
- Copia subdirectorios si no están vacíos (como XCOPY).
- /E
- Copia subdirectorios, aunque estén vacíos (como XCOPY).
- /M
- Copia ficheros con el atributo Archivo (como XCOPY con la opción /M ).
- /MOV
- Mueve los archivos, borrándolos del origen.
- /MOVE
- Borra ficheros Y carpetas (los borra del origen tras la copia).
- /MON:n
- Monitoriza y lanza la copia tras n cambios (y MOT minutos).
- /MOT:n
- Configura el intervalo mínimo de monitorización (n minutos) antes de lanzar otra copia.
- /XA:atributos
- Excluye ficheros con cualquiero de los attributes dados. Ejemplo: /XA:H no copiará archivos con el atributo de oculto.
- /XF nombre
- Excluye ficheros indicados en nombre. Se aceptan comodines. Ejemplo: /XF *.bak no copiará ningún archivo con la extensión *.bak.
- /XD nombre
- Excluye directorios indicados en nombre en alguna parte de la ruta. Funciona con comodines (p.ej. /XD BKUP* no copiará directorios que empiecen por "BKUP", sin importar en qué parte del árbol se encuentren).
- /XC
- Excluye ficheros con cambios .
- /XN
- Excluye ficheros nuevos.
- /XO
- Excluye ficheros más antiguos
- /XX
- Excluye ficheros y directorios extra, que puede estar en destino, pero no en origen.
- /XL
- Excluye ficheros y directorios solitarios; Puede estar en origen, pero no en destino.
- /IS
- Incluye los mismos archivos.
- /IT
- Incluye ficheros retocados (p. ej.: si unos tienen atributos de archivos y otros de sólo lectura).
- /XJ
- Excluir enlaces simbólicos. Cuando se copian cuentas de usuario a otra ubicación en Windows Vista, es importante excluir los enlaces simbólicos. El enlace en '\Usuarios\...\AppData\local' denominada 'Application Data' apunta a su enlace superior, creando un bucle que puede hacer caer a Robocopy. Y aún mas, si un enlace apunta a un disco origen que se copia a otro disco destino usando /MIR (o /E y /PURGE) y se copia el enlace, éste apuntará al disco origen, que puede resultar en la modificación de los continidos del disco origen.
- /R:n
- Le indica a Robocopy los 'n' reintentos antes de terminar con error (1 millón por omisión).
- /IPG:n
- Le indica a Robocopy la pausa en 'n' milisegundos entre paquetes en transferencia en redes. Útil para preservar ancho de banda en conxiones lentas.
- /L
- SimuLa la realización de la copia sin hacerla, para probar el resultado de una configuración desde la línea de comandos.
- /W:n
- Tiempo de espera entre reintentos (30 seconds por omisión).
- /PURGE
- Borra los archivos que no estén en origen.
- /DST
- Compensación por diferencias horarias.
- /DCOPY:T
- COPia Fechas de Directorios. ### Disponible en XP026 (WinXP) & XP027 y posterior (Vista)
- /MAXAGE:n
- Vida MÁXima de los ficheros - excluye ficheros más antiguos que n días/fecha.
- /MINAGE:n
- Vida MÍNima de los ficheros - excluye ficheros con menos de n días/fecha.
- (Si n < 1900 entonces n = número días, si no n = fecha YYYYMMDD ).
- /MT:n
- Copia multihilos (multithreaded) (sólo Windows 7 ). El valor de n alcanza de 1 a 128 (8 por omisión)
Opciones de registro
- /NFL
- No registrar nombres de ficheros.
- /NDL
- No registrar nombres de directorios.
- /NS
- No registrar tamaños de ficheros.
- /NC
- No registrar clases de ficheros.
- /X
- Indicar todos los archivos extra.
- /V
- Sacar información minuciosa, con los archivos excluidos.
- /TS
- Incluir las fechas de los archivos de origen.
- /FP
- Incluir trayectorias completas.
- /NP
- No mostrar % copiado.
- /ETA
- Mostrar hora estimada de llegada.
- /LOG:fichero.txt
- Reemplazar fichero.txt con el estado de la tarea.
- /LOG+:fichero.txt
- Añadir el estado de la tarea a fichero.txt.
- /TEE
- Salida a la ventana de consola, así como el archivo de registro.
- /NJH
- Sin cabecera de la tarea.
- /NJS
- Sin resumen de tareas.
(Ver lista completa en [1] aquí)
Problemas conocidos
Hasta XP026
- La versión XP026 no devuelve los códigos ERRORLEVEL cuando existen directorios/ficheros extra.
- La nueva opción en Vista (XP027) /EFSRAW : Copiar archivos cifrados en modo EFS RAW; no está disponible para XP (XP026).
- Robocopy no copiará las fechas de las carpetas de origen. En su lugar, usará la fecha actual al crear las nuevas. Si se desea que ambas copias sean iguales, se tiene que usar otra solución de copia de seguridad. Se ha tratado en la versión XP026 y la versión de Vista (parámetro /DCOPY:T)
- No copia de manera fiable nombres cortos de ficheros.
- La copia de ficheros en modo reiniciable es mucho más lenta (alrededor de 6 veces más en red) que en modo normal o de respaldo por la necesaria sobrecarga de administración.
- Aunque la versión XP026 ya puede copiar archivos comprimidos ocurre una gran fragmentación.
- El modo Backup no puede invalidar la denegación explícita de permisos ACL de NTFS si el que copia no es un objeto del propietario. (Mensaje de error: ERROR 5 (0x00000005) Copiando seguridad NTFS al directorio de destino. Acceso denegado.) Se puede superar este error con sólo copiar los datos con esta configuración de opciones /COPY:DTen lugar de la opción /COPYALL
- Robocopy no preserva los [Enlace duro|enlaces duros]
- Robocopy no puede copiar a través de enlaces FTP.
Códigos de retorno ErrorLevel
El código de retorno de Robocopy es un mapa de bits, como se puede observar en:[7]
- 0×10 Error grave. Robocopy no copió nigún fichero. Se debe a un error de utilización o derechos de acceso insuficientes en origen o destino.
- 0×08 Algunos archivos o carpetas no se han copiado (Hubo errores de lectura y se rebasó el límite de reintentos). Comprobar estos errores más adelante.
- 0×04 Se han detectado algunas discrepancias en los nombres de archivos y ficheros. Examinar el registro de salida. Probablemente hará falta administración.
- 0×02 Se han detectado archivos / directorios extra. Examinar el registro de salida. Hará falta administración.
- 0×01 Se han copiado uno o más ficheros con éxito (o sea, han llegado nuevos ficheros).
- 0×00 Ningún error, no se ha copiado nada. Origen y destino están completamente sincronizados.
Se puede usar estos códigos para su utilización en fichero por lotes, de la sigueiente manera:
if errorlevel 16 echo ***ERROR FATAL*** & goto end if errorlevel 8 echo **COPIAS FALLIDAS** & goto end if errorlevel 4 echo *DISCREPANCIAS* & goto end if errorlevel 2 echo FICHEROS EXTRA & goto end if errorlevel 1 echo Copia correcta & goto end if errorlevel 0 echo –sin cambios– & goto end :end
De forma alternativa, también se pueden usar para dar información más detallada:
if errorlevel 16 echo ***ERROR FATAL*** & goto end if errorlevel 15 echo FAIL MISM XTRA COPY & goto end if errorlevel 14 echo FAIL MISM XTRA & goto end if errorlevel 13 echo FAIL MISM COPY & goto end if errorlevel 12 echo FAIL MISM & goto end if errorlevel 11 echo FAIL XTRA COPY & goto end if errorlevel 10 echo FAIL XTRA & goto end if errorlevel 9 echo FAIL COPY & goto end if errorlevel 8 echo FAIL & goto end if errorlevel 7 echo MISM XTRA COPY & goto end if errorlevel 6 echo MISM XTRA & goto end if errorlevel 5 echo MISM COPY & goto end if errorlevel 4 echo MISM & goto end if errorlevel 3 echo XTRA COPY & goto end if errorlevel 2 echo XTRA & goto end if errorlevel 1 echo COPY & goto end if errorlevel 0 echo –sin cambios– & goto end :end
Versiones
- XP010 - Incluida en el Kit de Recursos de Windows 2003
- XP026 - En descarga con Robocopy GUI
- XP027 - Incluida con Windows Vista
- XP028 - Incluida con Windows Vista SP1 y Windows Server 2008
Véase también
- DOS
- XCOPY
- Símbolo del sistema MS-DOS
- rsync
- SyncToy
Referencias (en inglés)
- ↑ http://windowsitpro.com/Windows/Articles/ArticleID/44324/pg/2/2.html Robocopy XP010 FAQ Wield powerful new switch options.
- ↑ http://technet.microsoft.com/en-us/magazine/dd542631.aspx
- ↑ Microsoft's Robocopy compromise.
- ↑ Ugly bug in Robocopy - ignoring security on file level.
- ↑ Joshua Hoffman. «Utility Spotlight Robocopy GUI» (html), TechNet Magazine, Microsoft Corporation and CMP Media, LLC, November, 2006. Consultado el 2008-07-17.
- ↑ Robocopy.exe, Microsoft Windows Server 2003 Resource Kit, help output when run with /? command line switch. Complete help with /??? command line switch.
- ↑ Robocopy Errorlevel Return Codes
Enlaces externos
- Windows Server 2003 Resource Kit Tools
- Robocopy GUI from Microsoft Tech-Net
- RichCopy, an Advanced Alternative to RoboCopy
Categorías: Almacenamiento informático | Microsoft Windows
Wikimedia foundation. 2010.