Robocopy en Windows, ejemplos prácticos y códigos

ROBOCOPY es uno de los comandos disponibles más poderosos, útiles y empleados en la línea de comandos de Windows.


Inicia la aplicación Robocopy.exe incluida en todas las versiones de Windows, que permite copiar carpetas y directorios ya sea en una PC local o en la red (no copia archivos aislados).


Es una especie de comando de tercera generación que toma las cualidades de los conocidos COPY y XCOPY y las perfecciona al máximo.
En la práctica ROBOCOPY ofrece un sinnúmero de opciones y las copias se efectúan a la máxima velocidad que permiten físicamente los dispositivos.


Ningún programa o aplicación es capaz de ni siquiera acercarse a los resultados de ROBOCOPY.


Aunque solo funciona mediante la línea de comandos, cualquier usuario con pocos conocimientos puede aprovecharse de sus ventajas usándolo con las opciones elementales.

Ejemplo de copia de archivos con Robocopy en Windows

Imagen que muestra un proceso de copia de archivos en Windows usando ROBOCOPY, puede observarse la velocidad a la que se realizó el proceso.

Ventajas del uso de Robocopy en Windows

• Tolera las interrupciones en la copia de archivos ya sea por cortes de energía o en la conexión.
• Realiza reintentos automáticos si no se puede acceder a un archivo.
• Permite copiar grandes cantidades de archivos, imposible con XCOPY.
• Muestra indicador de progreso.
• Permite copiado multihilo.
• Copia correctamente toda la información como propiedades, atributos, datos del propietario, fechas, etc además mantiene inalterables los permisos del archivo.

Formas prácticas y sencillas de usar el comando ROBOCOPY

ROBOCOPY ORIGEN DESTINO /E Permite copiar de forma recursiva carpetas con subdirectorios aunque estén vacíos.

ROBOCOPY ORIGEN DESTINO /S Copia de forma recursiva carpetas con subdirectorios pero no los vacios

ROBOCOPY ORIGEN DESTINO /MIR MIR modo espejo, Copia de forma recursiva pero al terminar se eliminan los archivos en el destino que ya no existen en el origen.

Es posible indicar archivos específicos para ser copiados usando asteriscos de la siguiente forma:


ROBOCOPY ORIGEN DESTINO *.doc /E En este caso solo se copiarán documentos de extensión de archivo .DOC, si esta opción no es utilizada se emplea de forma predeterminada *.* o sea se copian todos los archivos encontrados.

Opciones que permite el comando ROBOCOPY

/R:nNumero de reintentos en caso de algún error.
/W:nTiempo de espera entre reintentos.
/MT:nRealiza copias multiproceso, n especifica el número de hilos, el valor predeterminado es 8, n debe estar comprendido entre 1 y 128.
/MOVMueve archivos y los elimina del origen después de ser copiados.
/MOVEMueve archivos y carpetas y los elimina del origen después de ser copiados.
/VMostrar información detallada durante la copia.
/LHace una simulación, solo mostrar no copia.
/FPIncluir ruta de acceso completa de los archivos en el resultado.
/NJHNo muestra el encabezado en la consola.
/NJSNo muestra el resumen final.
/Z Copia archivos en modo reiniciable. Escribirá un registro en el archivo incompleto en caso de que la operación se vea interrumpida, para que en otra ejecución de Robocopy pueda continuarse por donde se dejó.
/MAX:n Tamaño máximo de archivo, no se copian archivos mayores que el valor de n expresado en bytes.
/MIN:n Tamaño mínimo de archivo, no se copian archivos menores que el valor de n expresado en bytes.
/MAXAGE:n Antigüedad máxima de archivo, no se copian archivos mayores que el valor de n en días, puede usarse también fecha.
/MINAGE:n Antigüedad mínima de archivo no se copian archivos menores que el valor de n en días, puede usarse también fecha.
/RH:hhmm-hhmm Horas de ejecución, intervalo de horas en formato de 24 horas en que se debe iniciar la copia.
/LOG:log.txt Permite guardar un informa con los datos de la copia efectuada en un archivo de texto.

Para crear un documento en tu escritorio con todas las opciones que permite el comando Robocopy, solo introduce en la consola de CMD:

robocopy.exe /?>%userprofile%\Desktop\Opciones_Robocopy.doc

Ejemplos prácticos de tareas en que usar el comando ROBOCOPY

Algunos ejemplos prácticos de códigos empleados para usar Robocopy, distintas opciones que se pueden usar. Para no crear confusión se utiliza la misma carpeta de origen.
Se utiliza %userprofile% que es una variable de entorno que sustituye el nombre de usuario, ya que en cada PC este es diferente.
Siempre asegúrate que si la ruta que utilizas contiene espacios en el nombre, es necesario encerrarla entre comillas.
ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ /E /MT:24 /LOG:%userprofile%\Desktop\copia.txt Introduciendo la línea de código anterior en la consola, se crea un respaldo completo de la carpeta Mis documentos, emplea el modo multiproceso copiando con 24 hilos simultáneamente y al finalizar escribe el resultado en un log nombrado: copia.txt creado en el escritorio.

ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ *.doc /S Crea un respaldo de la carpeta Mis documentos, pero solo copiando archivos con la extensión .doc y .docx, asegurando que solo se copien las subcarpetas que no estén vacías.

ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ /e /MAX:10000 Crea un respaldo de Mis documentos pero solo copiando archivos mayores de 10 KB.

ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ /S /MAXAGE:1 Crea un respaldo de Mis documentos pero solo copiando archivos creados o modificados en las últimas 24 horas (/MAXAGE:1)

@echo off set dia=%date:~0,2% set mes=%date:~3,2% set year=%date:~6,4% ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\%dia%-%mes%-%year%\ /MAXAGE:1 La misma operación que con el código anterior, pero en este caso con un archivo batch que cada vez que se ejecuta crea una nueva carpeta con el formato dia-mes-año y permita conservar los respaldos anteriores.

ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ /E /RH:2350-2359 Crea un respaldo completo de Mis documentos iniciándolo a las 11:50pm.

ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ /min:10000 /L Listar. Muestra una lista de los archivos en la carpeta de origen, pero solo mayores de 10KB.

ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ /max:10000 /L Listar. Muestra una lista de los archivos en la carpeta de origen, pero solo los menores de 10KB.

ROBOCOPY %userprofile%\Documents\Descargas D:\BACKUP\Documentos\Descargas\ /E /MOT:60 Supervisar origen, crea un respaldo de la carpeta de Descargas y revisa cada 1 hora (60 minutos) si existe algún archivo nuevo, si es así lo agrega al respaldo ya hecho.

ROBOCOPY E:\ D:\BACKUP\DISK\ /E /R:0 /W:0 /V Copia datos de un CD insertado en la unidad E con sectores dañados, asegurando con la opción /R:0 que no se harán reintentos de lectura en errores y con la opción /W:0 que no habrá tiempo de espera. El éxito también depende de las características de la unidad óptica usada.

Usar los códigos de error de ROBOCOPY

Si haces un archivo batch para automatizar algunas tareas, puedes aprovechar los códigos de error generados para que se reproduzca un sonido y se muestre un mensaje de acuerdo con los resultados obtenidos.

• El código de error 0 significa que no se han hecho cambios.
• El código de error 1 significa que la copia ha sido hecha correctamente.
• El código de error 4 y mayor significa que ha habido algún error.

Estos son solo algunos, puedes utilizarlos todos y personalizar el resultado a tu gusto.


Ejemplo del archivo batch, pruébalo:

 @echo off
ROBOCOPY %userprofile%\Documents D:\BACKUP\Documentos\ *.doc /s
if errorlevel 4 echo DISCREPANCIAS & goto bad
if errorlevel 1 echo Copia correcta & goto ok
if errorlevel 0 echo Sin cambios & goto okk

:bad
start C:\Windows\Media\chord.wav
msg * ERROR
pause
exit

:ok 
start C:\Windows\Media\ding.wav
msg * Copia correcta
pause
exit

:okk
start C:\Windows\Media\notify.wav
msg * Sin cambios
pause
exit

Lista de todos los códigos de error generados por ROBOCOPY

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

Trucos y consejos al usar ROBOCOPY en Windows

• Al usar Robocopy en archivos batch puedes especificar como origen simplemente %1, de esta forma puedes arrastrar carpetas y directorios completos encima del batch y soltarlos, la copia se efectuará hacia el destino especificado en el código, un ejemplo:
robocopy %1 D:BACKUP /E


• Ten siempre la precaución de que los nombres de directorios que contengan espacios, deben estar encerrados entre comillas, por ejemplo:
➔ G:\Videos New – No funcionará
➔ «G:\Videos New» – OK


• Puedes crear en un archivo de texto la línea de comandos a ejecutar y después copiarla y pegarla en el cuadro de Inicio, de esa manera no será necesario abrir la consola previamente.
Hazlo de forma similar al siguiente ejemplo:
CMD /K ROBOCOPY D:\Videos «G:\Videos New» /E La opción /K permite que la consola permanezca abierta, si utilizas /C, la consola se cerrará al terminar el proceso.

Usar ROBOCOPY para hacer una copia idéntica de un disco duro completo

Si en algún momento necesitas clonar un disco duro, es decir hacer una copia idéntica de todos los archivos e información, puedes usar ROBOCOPY para esa tarea.
Es la opción ideal cuando necesitamos reemplazar un disco por otro más reciente.
Solo necesitamos conectar los dos discos y percatarnos que letra de unidad les asigna Windows.
En caso que vayamos a copiar un disco que posee una instalación de Windows, necesitamos hacer dicha tarea en otra PC.
Usa el siguiente comando en la consola de CMD o en la herramienta Ejecutar:
ROBOCOPY D:\ E:\ /E /R:0 /W:0 /V Sustituye D: por la letra asignada al disco cuyo contenido se va a copiar.
Sustituye E: por la letra asignada al disco donde se va a pegar la información.
Las opciones /R:0 /W:0 evitan reintentos de lectura en caso de errores y que no habrá tiempo de espera.


Como emplear Robocopy para hacer copias en la red

ROBOCOPY por su característica de copiar solo archivos que se han modificado es de gran utilidad para realizar respaldos, tanto en la PC como en la red.
Plantilla de archivo batch para realizar una copia de una fuente determinada a un destino incluyendo todos los permisos de acceso, cuando se ejecute regularmente solo copiará archivos que hayan sido modificados. Para usarlo ingresa la ruta necesaria en la fuente y destino.

@ECHO OFF
SETLOCAL

SET _fuente=RUTA fuente
SET _destino=RUTA destino
SET _que=/COPYALL /B /SEC /MIR
SET _opciones=/R:0 /W:0 /LOG:log.txt /NFL /NDL
ROBOCOPY %_ fuente % %_destino% %_que% %_opciones%

Significado de cada opción.

• /COPYALL Copia información de todos los archivos.
• /B Copiar archivos en modo de copia de seguridad.
• /SEC Copia archivos con seguridad.
• /MIR Reflejar un árbol de directorios.
• /R:n Numero de reintentos.
• /W:n Tiempo a esperar entre reintentos.
• /LOG Ubicación del log de salida.
• /NFL Sin lista de archivos, no registrar nombres de archivo.
• /NDL Sin lista de directorios, no registrar nombres de directorio.

En caso de que necesites utilizar ROBOCOPY para realizar una copia de un servidor a otro en la red, es necesario autentificarse primero, hazlo el batch de la siguiente forma:

@ECHO OFF
SETLOCAL

SET _fuente=\\Servidor1\Usuario
SET _destino=\\Servidor2\Backup_Usuario
SET _que=/COPYALL /B /SEC /MIR
SET _opciones =R:0 /W:0 /LOG:log.txt /NFL /NDL

NET USE\\Servidor1\IPC$ /u:nombre_de_usuario  contraseña
ROBOCOPY %_ fuente % %_destino% %_que% %_opciones%

Otro código en este caso útil para subir archivos de la PC a tu servidor web.

SET src="D:\origen de los archivos"
SET dest="\\servidor\backup$"
SET log="C:\logs\copia.log"
robocopy %src% %dest% /E /Z /SEC /MIR /R:1 /LOG:%log%

Es posible ejecutar dos tareas al mismo tiempo minimizadas, para eso utilízalo en un batch de la siguiente forma:

@ECHO OFF
Start /Min "tarea1" Robocopy\\ArchivoServidor1\C$\Database1\\ArchivoServidorBackupA\c$\Backups
Start /Min "tarea2" Robocopy\\ArchivoServidor2\C$\Database2\\ArchivoServidorBackupB\c$\Backups 

Para limitar el ancho de banda al usar Robocopy en la red, es posible usar el parámetro /IPG:n que enviará paquetes de 64KB cada uno seguidos por un retraso especificado en n de milisegundos.

¿Qué son los registros A, CNAME, NS, MX y PTR?

REGISTROS CNAME

El registro ‘CNAME’ permite a una máquina ser conocida por uno o más nombres de host. Debe existir primero un registro ‘A’ que tambien es conocido por nombre ‘canonico’ o nombre oficial.

Usando ‘CNAME’, puede apuntar otros nombres de host a la dirección del registro ‘A’ o nombre ‘canonico’. Por ejemplo:

ftp.sudominio.com. CNAME sudominio.com.
mail.sudominio.com. CNAME sudominio.com.
ssh.sudominio.com. CNAME sudominio.com.

Los registro ‘CNAME’ hacen posible acceder a su dominio a través de ftp.sudominio.com, mail.sudominio.com, etc. Sin un registro ‘CNAME’ apropiado, no será Ud. capaz de conectar a su servidor usando tal dirección.

Introducir un registro ‘CNAME’

Si deseamos que home.site-helper.com apunte a site-helper.com, podemos entrar los registros de dos maneras:

home CNAME site-helper.com.

El primer método le permite teclear simplemente el subdominio. No añada un punto después del nombre de subdominio.

home.site-helper.com. CNAME site-helper.com.

REGISTROS (NS) SERVIDORES DE NOMBRES

Los registros ‘NS’ especifican los servidores de nombres (DNS) que tienen autoridad para el dominio.

Importante: Cambiar los registros ‘NS’ puede causar que su sitio deje de responder. Generalmente no hay necesidad de cambiar estos registros.

Introducir un registro ‘NS’

El primer paso es borrar los ‘NS’ antiguos de la tabla.
A continuación, introduzca los dos nuevos registros de los servidores de nombres. Asegúrese de que el nombre de host acaba con un punto, como en el ejemplo:

site-helper.com. NS ns1.nameserver.com.

Perdone que seamos reiterativos, pero es importante. Por favor, asegúrese de poner un punto al final del nombre de host de los servidores de nombres en el registro ‘NS’ (‘ns1.nuevodns.com.’ y no ‘ns1.nuevodns.com’).

REGISTROS MX

Servicios gratuitos de correo como everyone.net requieren que se hagan cambios en los registros ‘MX’ para que sus programas puedan trabajar. Este cambio permite que el correo destinado a su dominio sea redirigido a su servidor. Por favor, tome nota de que cambiar sus registros ‘MX’ impedirá que sus cuentas POP3, los redireccionadores, los autorespondedores, y las listas de correo dejen de funcionar.

site-helper.com. MX 0

Add another MX record

email.service.com MX 10

Primero borre el registro ‘MX’ antiguo marcando la caja del registro apropiado y clickando “Borrar selección”, ahora no debería ver ningún registro ‘MX’ listado.

A continuación, teclee el nombre de host seguido de un punto, tal como le ha sido facilitado por su proveedor de correo, seleccione el nivel de prioridad (usualmente 10) de la lista desplegable de la derecha. La prioridad le habrá sido facilitada también por su provedor de correo. Clicke “Añadir”

Nota: (Una vez más) Asegurese de incluir un punto al final del nombre de host.

Para restaurar los registros ‘MX’ originales, introduzca sudominio.com. y prioridad 0 después de borrar los otros registros ‘MX’.

REGISTROS PTR

Los registros ‘PTR’ o apuntadores, se usan para la resolución inversa. Por ejemplo, para hacer que 192.168.0.1 resuelva hacia www.sudominio.com. El registro debería verse como:

Nota: La dirección IP se invierte en el primer campo. Recuerde poner el punto al final del nombre de host (segundo campo).

El método “in-addr-arpa” es el que se usa más a menudo.

Importante: Los registros ‘PTR’ solo son efectivos si su sitio tiene sus propias direcciones IP.

Importante: Los registros ‘PTR’ son solo efectivos si el archivo ‘named.conf’ se edita manualmente y se añade la información de zona pertinente. Esto solo puede hacerlo el usuario ‘root’ (el administrador del servidor).