Saltar al contenido

¿Cómo utilizar Robocopy en Windows?

¿Cómo utilizar Robocopy en Windows?

Robocopy, llamado así de forma abreviada y cuyo nombre completo es Robust File Copy, es una aplicación de línea de comandos para Windows cuya función es la de replicar datos. Hoy vamos a explicar fácilmente como utilizar Robocopy para replicar estructuras de directorios y archivos en modo «pro».

La herramienta Robocopy posee la misma función que otros comandos familiares como copy o xcopy, aunque la diferencia radica en que no es un simple copiador de archivos, sino que fue diseñado para copiar carpetas y mantenerlas igual a como estaban.

Mediante el uso de Robust Copy podemos copiar un simple directorio o copiar de manera recursiva un directorio y todos los subdirectorios que contiene. Es una utilidad de copia de archivos avanzada y que puede resultar tan compleja como queramos que sea.

Ventajas de usar Robust File Copy

Una de sus principales virtudes es que permite recuperar automáticamente el progreso de una transferencia de archivos tras haberse producido una desconexión de red o error. También destaca por permitirnos la «copia selectiva» de objetos en base a si son nuevos o han sido actualizados a partir de una fecha. Así, Robocopy nos permite mantener copias idénticas de una estructura de disco tanto en el mismo equipo como en otras ubicaciones de red.

Otro aspecto positivo de la herramienta es que, si un archivo a copiar existe en dos ubicaciones (origen y destino), por defecto Robust File Copy copiará el archivo solamente si ambas versiones de archivo son diferentes en tamaño y fecha de modificación. Así ahorramos tiempo si lo estamos utilizando en una infraestructura con bajo rendimiento o con uso de datos limitado.

Finalmente, podemos especificar si las copias se reiniciarán en caso de producirse un fallo y esto también nos ahorra tiempo cuando la conectividad de red se pierde por algún motivo. Cuando la herramienta termina de trabajar nos mostrará un informe de resultados, que podremos configurar además para que se grabe en un archivo de LOG.

Disponibilidad de la herramienta

Robocopy está incluído en todos los sistemas operativos recientes de Microsoft, desde Windows Vista y Windows 7 en adelante, con soporte por supuesto para Windows Server (donde más se utiliza en un principio).

Como utilizar Robocopy

A continuación voy a describir algunos de los comandos útiles para las operaciones más típicas que podríamos necesitar hacer en nuestro equipo o servidor Windows. Básicamente, empezaremos por indicar siempre la letra de unidad y ruta de origen seguida de la letra de unidad (o dirección IP) y ruta destino, seguido o antecedido de las opciones que correspondan.

He creado una unidad con la letra E: a modo de ejemplo donde se irán guardando las copias de seguridad que le digamos desde la unidad C:\. Tened en cuenta que la ayuda del comando Robocopy estará disponible escribiendo rocopy /? en el CMD.

backups-de-robocopy

Veamos algunos ejemplos:

Como copiar el contenido de una carpeta dentro de otra

robocopy c:\Users\AlejandroW7\Documents E:\backups\documents

Siempre veremos por defecto un informe de resultado similar al siguiente, donde se especifica la fecha, unidades origen/destino y opciones utilizadas.

informe-de-copia-de-robocopy

Copiar un directorio

C:\>robocopy c:\Users\AlejandroW7\Documents\nuevacarpeta E:\backups\documents\nuevacarpeta

Copiar un subdirectorio

Si antes hemos escrito el comando sin parámetros, ahora escribiremos el prefijo /S para indicar que tome todos los subdirectorios al copiar:

C:\>robocopy /S c:\Users\AlejandroW7\Documents E:\backups\documents

Copiar el contenido de una carpeta a otra incluyendo directorios vacíos

C:\>robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /E

Copiar archivos con un tamaño mayor al especificado

C:\>robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /min:2048

El comando anterior copiará archivos desde c:\Users\AlejandroW7\Documents cuyo tamaño sea superior a 2048 bytes (2 Kb).

Copiar archivos con un tamaño menor al especificado

C:\>robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /max:8192

El comando anterior copiará aquellos archivos cuyo tamaño no exceda los 8 Kb.

Realizar un espejo de una carpeta con Robocopy

C:\>robocopy c:\Users\AlejandroW7\ E:\backups\documents /MIR

Dicho comando realizará un espejo o copia exacta de lo que encuentre dentro de c:\Users\AlejandroW7 y lo colocará dentro de E:\backups\documents. El uso de este comando implica indirectamente utilizar el comando PURGE que eliminará de la operación aquellos archivos que no existan en la carpeta esperada.

IMPORTANTE: cuidado al usar el modificador /MIR pues podría eliminar archivos en el orígen que quizá no te interese perder.

Copiar desde la red

Si quieres utilizar Robocopy para copiar archivos desde un servidor de tu red deberás escribir un comando como sigue:

C:\>robocopy \\SERVIDOR\backups E:\backups

Todos los archivos existentes en la carpeta backups del equipo remoto (donde servidor es el nombre del equipo o su IP) se copiarán dentro del directorio E:\backups

Copiar un árbol de directorios

robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /MIR /dcopy:T

Lo que haremos con dicho comando es copiar un árbol de directorios junto con las propiedades de fecha de todos los elementos.

Borrar el directorio origen al finalizar

robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /mov /s

Mover archivos según la antigüedad que tengan

robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /move /minage:30

Con estas propiedades moveremos únicamente aquellos archivos con más de 30 días de antigüedad.

Copiar archivos sin sobreescribir ninguno

En ocasiones nos interesará mantener diferentes copias de archivos con el mismo nombre y podemos hacerlo fácilmente con este método:

robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /E /XC /XN /XO
  • /E realiza copias recursivas de los subdirectorios encontrados
  • /XC Excluye archivos con la misma marca temporal (fecha) pero con diferentes tamaños. Normalmente Robocopy sobre-escribe este tipo de archivos.
  • /XN Excluye los archivos existentes más recientes que las copias que están en el destino.
  • /XO Excluye archivos existentes que son más antiguos que las copias en destino. Robocopy normalmente los sobre-escribe.

Ocultar la salida de Robocopy

Si no queremos ver datos estadísticos o informativos, tenemos los siguientes apéndices:

  • /NFL: No file list. No se incluirán nombres de archivo en el log.
  • /NDL: No directory list. No se incluirán nombres de directorios.
  • /NJH: No job header. No se mostrará la cabecera.
  • /NJS: NO job summary. No se mostrará el total de archivos, errores o coincidencias.

Mostrar la salida de robocopy en un archivo

robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /LOG:e\backups\log.txt

Es interesante si queremos crear archivos con los resultados para mantener un control a lo largo del tiempo.

  • /LOG:archivo : Salida a un archivo LOG (sobreescribe lo existente).
  • /LOG+:archivo : Salida a un archivo LOG (añade datos a log existente).

Si queremos una salida UNICODE para el archivo de registro, basta con poner:

  • /UNILOG+:archivo

Utilizar Robocopy Multi-Threaded Mode

Con el comando que veremos a continuación ganaremos rendimiento -dependerá de si es un sistema remoto/local así como de la composición de los directorios- haciendo un copiado «multi-hilo».

robocopy c:\Users\AlejandroW7\Documents E:\backups\documents /MT:20 /V /ETA /LOG:e\backups\log.txt
  • /MT[:n] significa copia multi-hilo con n= número de hilos/procesos a utilizar (entre 1 y 128) siendo por defecto 8 el valor usado si no especificamos uno en el comando.

Además, en este caso recomiendo utilizar el modo Verbose (/V) y la información sobre tiempo restante de forma opcional (/ETA).

Un ejemplo de comando completo que podríamos utilizar para salvaguardar todos los archivos y carpetas nuevos en una unidad o directorio concretos, sería el siguiente:

robocopy \servidor\recurso_compartido\ruta  \servidor\recurso_compartido\ruta /DCOPY:DA /COPY:DAT /XO /E /save:prueba /tee /R:12 /W:5 

O bien:

robocopy Unidad:\ruta /DCOPY:DA /COPY:DAT /XO /E /save:prueba /tee /R:12 /W:5

¿Qué significa Modificado, Extra y Solitario en Robocopy?

La documentación de este comando no está bien detallada y es posible que os genere dudas cuando veáis salidas de este tipo. Veamos el significado de estos estados para nuestros archivos copiados.

Modificado

Un archivo modificado se define como uno que ya existe tanto en destino como en origen, con tamaño y fecha de modificación idénticas, pero con diferentes ajustes de atributos.

Solitario

Un archivo solitario existe en origen pero no en destino. Si queremos impedir que se generen nuevos archivos en destino, excluiremos los solitarios o «lonely».

Extra

Un archivo «extra» existe en el destino pero no en origen. Si excluimos los archivos extra impediremos que nuestra operación elimine archivos en destino, en caso de que configuremos el modo /MIR o mirror.

Espero que os sirva de ayuda el artículo y no me despediré sin antes dejaros un enlace a la excelente web SS64 donde encontraréis más ejemplos de uso de RoboCopy.

Alejandro Ver todo

Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.

14 comentarios sobre “¿Cómo utilizar Robocopy en Windows? Deja un comentario

  1. El comentario “IMPORTANTE: cuidado al usar el modificador /MIR pues podría eliminar archivos en el orígen que quizá no te interese perder.”, creo que es incorrecto.
    Creo que nunca se pueden borrar archivos ni directorios del origen.
    ¿Pueden confirmarlo?

    Me gusta

  2. No funciona /256, se detiene en el mismo directorio con el mensaje “El nombre del archivo o la extensión es demasiado largo.” y luego sigue y presenta en otro directorio “No tienes un privilegio sobre el archivo”
    ¿Qué hacer?

    Me gusta

    • Hola Fernando, disculpa la demora. En el primer error el sistema de archivos está limitando los nombres completos (con ruta + nombre de archivo) a 255 caracteres seguramente. Necesitarás acortar la ruta moviendo los ficheros a una ruta superior en la jerarquía y/o renombar el archivo para que sea más corto.
      En el caso de los privilegios comprueba el archivo en cuestión y modifica sus propiedades si fuera necesario para que el usuario con el que lanzas tenga permisos.
      Saludos.

      Me gusta

  3. Saludos, Muchas gracias por la labor importante que realiza al hacernos conocer esta información. Quiero clonar mi viejo disco duro de Windows 7 para reemplazarlo por uno de mas capacidad. Cual sería la orden en Robocopy sin que se borren los archivos de origen?. Muchas gracias desde Medellin, Colombia.

    Le gusta a 1 persona

    • Hola, yo lo aplicaría como sigue:
      robocopy , según tu caso, no se si es un recurso compartido o entre unidades locales del equipo directamente:
      robocopy \servidor\recurso_compartido\ruta \servidor\recurso_compartido\ruta /DCOPY:DA /COPY:DAT /XO /E /save:prueba /tee /R:12 /W:5
      robocopy Unidad:\ruta /DCOPY:DA /COPY:DAT /XO /E /save:prueba /tee /R:12 /W:5

      /save:prueba es por si quieres salvar el perfil de copia y reutilizarlo más adelante.
      Recuerda abrir el CMD con privilegios de administrador.

      Me gusta

  4. Saludos, Muchas gracias por su respuesta, quiero hacer la clonación entre dos discos locales asiq ueno entendi bien el comando que me indicó. Podría darme la orden para realizarlo entre dos discos locales colocados en el mismo pc?. Muchas gracias Muchas gracias desde Medellin, Colombia.

    Le gusta a 1 persona

  5. Hola, voy un poco loco buscando informacion e intentando correjir un error que tengo con robocopy.

    Estoy intentando copiar todo un directrorio, y que quede vacio despues de copiarlo en una unidad de red de un servidor

    Todo en el mismo entorno de red, con permisoso de administrador, y que no me pregunte si quiero sobreescribir, si no que lo haga directamente.

    Gracias y salu2

    Me gusta

  6. Es posible copiar un fichero o conjunto de ficheros (o carpetas) a diferentes destinos, con un solo comando?
    No veo en la documentación que permita como Destino lineas de un fichero .txt (por ejemplo), que contenga varias maquinas
    Ejemplo:
    robocopy word.doc @listado_equipos_remotos.txt (y añadir los parámetros que procedan).

    Gracias

    Me gusta

    • Hola celticsoft. No, no es posible tal cosa. Lo único que puedes hacer es replicar un árbol de carpetas de forma recursiva, lo comento por si quieres «clonar» varios directorios dentro del mismo equipo. Para el caso que creo que propones, deberás realizar varias tareas, una por equipo. Pro TIP: usa Robomirror si son muchos destinos, ahorrarás tiempo y podrás crear tarea programada en el acto: http://robomirror.sourceforge.net/

      Me gusta

  7. Hola, es posible copiar varias carpetas de diferentes rutas y pegarlas todas en 1 sola?

    Ejemplo: Quiero copiar la carpeta de Documentos y de Imágenes y las quiero pegar en el escritorio, como sería el comando?

    Me gusta

  8. Hola a tod@s,

    ¿Alguien me puede decir cómo hago para que el resultado del log, me muestre sólo los archivos o carpetas que en el informe final sale como «errores». Que saque un log diciendo que 14.000 archivos, han sido correctos y 12 han fallado, no es muy operativo.

    Me gusta

Deja tu comentario (puedes hacerlo de forma anónima)

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.