Conecta con nosotros
Línea de comandos Línea de comandos

Guías

Conociendo un poco a Robocopy, una herramienta de línea de comandos para Windows

Publicado

el

Si bien Windows es visto por la inmensa mayoría del público como un sistema operativo que se usa a través de la interfaz gráfica, eso no quiere decir que no tenga preinstalado o a su disposición interesantes herramientas que funcionan a través de la línea de comandos, esa interfaz cuyo uso se asocia por lo general a Linux.

Es más, incluso la propia Microsoft, sin hacer mucho ruido, ha ido cuidando el uso de la línea de comandos en Windows e incluso parece haberle dado más protagonismo en los últimos tiempos, algo que desde ciertos puntos de vista puede ser entendido como un especie de claudicación ante las evidentes ventajas que aporta frente a las interfaces gráficas, si bien estas últimas también son mejores en ciertos aspectos.

Microsoft desarrolla e impulsa desde hace muchos años PowerShell. Este intérprete de línea de comandos estuvo durante muchísimo tiempo asociado a Windows, pero la compañía decidió en 2016 convertirlo en código abierto (aunque reservándose algunas cartas) y llevarlo a Linux y macOS, por lo que desde entonces compite con otras soluciones del mismo ámbito como Bash y Zsh. Frente al símbolo de sistema tiene entre sus ventajas la de permitir crear comandos propios y secuencias de comandos utilizando el lenguaje de programación C#.

Ayuda de Robocopy

Ayuda de Robocopy.

El cuidado que le dedica el gigante de Redmond a la línea de comandos quedó palpable más recientemente con Windows Terminal, una aplicación de terminal de código abierto que ha sido establecida por defecto en Windows 11. Es capaz de manejar tanto el símbolo de sistema (lo que algunos llaman coloquialmente emulador de MS-DOS) como PowerShell y también puede ejecutar pestañas independientes para WSL, el subsistema de Windows para Linux que permite poner en funcionamiento un sistema operativo Linux completo sobre el de Microsoft.

Como vemos, la línea de comandos está lejos de ser un cadáver en Windows y es más, visto está que Microsoft le ha ido dando un mayor protagonismo en los últimos tiempos, aunque todos esos movimientos van principalmente dirigidos a programadores, administradores de sistemas y perfiles de usuarios avanzados. Pese a que no sea tan amigable para el usuario común, nunca viene mal tener ciertas nociones, y es que si bien las interfaces gráficas son en un principio más cómodas, para muchas tareas son más lentas que la línea de comandos una vez se domina esta última.

En ocasiones anteriores mencionamos los comandos más útiles para Windows y nos extendimos con SDelete, una herramienta que permite borrar ficheros de forma que sea difícil recuperarlos. En esta ocasión nos extenderemos un poco con Robocopy, una interesante herramienta para copiar principalmente directorios y el contenido de estos.

Qué es Robocopy

Robocopy es accesible desde la línea de comandos, tanto desde PowerShell como el símbolo del sistema, y viene a ser una referencia de copia de ficheros robusta, robust file copy en inglés. Básicamente se trata de una herramienta para copiar y mover ficheros de un lugar a otro. En Windows 7 fue mejorado con la posibilidad de poder funcionar en multiproceso (multithreading) para mejorar el desempeño, lo que recuerda un poco a lo que supuso Google Chrome/Chromium en su momento frente a sus rivales.

Antes de mostrar con ejemplos algunas de las características, a buen seguro que a muchos el nombre de la herramienta le recuerda a RoboCop, el conocido héroe cíborg y protagonista del universo del mismo nombre que transcurre en una Detroit futurista y distópica. ¿Es Robocopy una referencia sarcástica a RoboCop? Sea o no verdad, la realidad es que existe, o al menos llegó a existir, una interfaz gráfica para Robocopy llamada RoboCop.

Usando Robocopy

Usando Robocopy para copiar y mover ficheros

Después de exponer qué es Robocopy, vamos a mostrar su funcionamiento con algunos ejemplos. Exponer todo lo que puede hacer esta herramienta de manera detallada puede dar para mucho, así que nos centraremos en algunas de las características más conocidas sobre una carpeta para ayudar al usuario a adentrarse en su uso.

Comenzamos con el uso más básico de la herramienta, sin introducir ningún parámetro o argumento. Para completar el origen sin tener que escribirlo todo, el usuario puede autocompletar pulsando la tecla tabulador. Sin embargo, después de introducir el origen, queda una barra invertida o backslash delante de las comillas de cierre, por lo que queda de la siguiente manera si hay un espacio en el nombre del directorio o el fichero: '.\Xonotic OST (OGG)\'.

Si el usuario no quita la última barra invertida, estará escapando las comillas de cierre, así que en lugar del fin de la cadena de caracteres (el nombre del fichero o la carpeta con uno o varios espacios) se está indicando al intérprete de comandos que las entienda de manera literal, o sea, como si fuera una letra más del nombre del fichero o la carpeta. Debido a eso, hay que desplazarse con el cursor para situarlo justo delante de la segunda barra invertida y pulsar sobre la tecla de retroceso para que el origen quede así: '.\Xonotic OST (OGG)'. Otra posibilidad es dejar solo las comillas con el nombre del fichero o la carpeta entre ellas: 'Xonotic OST (OGG)'.

Además de establecer un origen, también hay que poner un destino, que es el nombre de la carpeta que se creará en el proceso de copiado (Sintonic en este ejemplo). Si se quieren poner espacios hay que colocar el nombre del destino dentro de unas comillas, cosa que no hemos empleado en nuestro caso, así que el comando queda de la siguiente manera:

robocopy '.\Xonotic OST (OGG)' Sintonic

Si el proceso de Robocopy no ha arrojado ningún error, el usuario debería de poder ver en la ubicación en la que se encuentra (C:\Users\Guillermo Puertas\Desktop', Guillermo Puertas es el nombre del usuario) una carpeta llamada Sintonic con los contenidos del origen (Xonotic OST (OGG)), el cual es un directorio que contiene la banda sonora del videojuego Xonotic.

Robocopy soporta copiado con multiproceso, lo cual viene muy bien para acelerar el proceso de copiado o de mover en los casos en los que hay una o varias carpetas con una gran cantidad de contenidos. La característica no funciona por defecto, así que hay que poner el parámetro /mt al final para activarla:

robocopy '.\Xonotic OST (OGG)' Sintonic2 /mt

Otra posibilidad interesante es el modo reiniciable, el cual puede activarse con el parámetro /z. Con el modo reiniciable, si se interrumpe una copia de archivo, Robocopy puede volver a copiar desde donde se dejó en lugar de copiar de nuevo todo el archivo.

robocopy '.\Xonotic OST (OGG)' Sintonic3 /z

Como suele ser normal en los intérpretes de comandos, es posible usar varios parámetros a la vez. He aquí un ejemplo con multiproceso y modo reiniciable a la vez:

robocopy '.\Xonotic OST (OGG)' Sintonic4 /mt /z

El parámetro /mov permite mover los ficheros contenidos por el origen, pero no lo subdirectorios y los contenidos de estos, hacia el destino y sin borrar el directorio de origen:

robocopy .\Sintonic7\ Atomic1 /mov

El parámetro /move permite mover los ficheros contenidos por el origen, pero no lo subdirectorios y los contenidos de estos, hacia el destino y borrando el origen si es que no contiene subdirectorios:

robocopy Atomic1 OMEGA /move

Y ahora exponemos uno de los parámetros más útiles de Robocopy, si no es el que más: /mir. Mir hace referencia a mirror en inglés, que viene a significar espejo, y lo que hace es replicar a modo de espejo todo el árbol o subárbol de directorios y ficheros en el destino.

robocopy '.\Xonotic OST (OGG)' Espejo /mir

Si uno busca la copia recursiva con todos los contenidos, esta es suministrada por el parámetro /s:

robocopy '.\Xonotic OST (OGG)' Sintonic5 /s

Los siguientes argumentos que vamos a mencionar requiere de privilegios adicionales para funcionar, así que lo recomendable es iniciar PowerShell o el símbolo de sistema con privilegios de administrador, cosa que hace pulsando con el botón secundario del ratón sobre la entrada en el menú de Inicio y luego haciendo clic sobre “Ejecutar como administrador”. Es importante tener en cuenta eso hará que la sesión de la terminal en C:\Windows\system32 en lugar de la carpeta del usuario, que es C:\Users\nombreusuario.

Iniciar PowerShell como administrador en Windows

Aquí vamos a mencionar tres ejemplos, empezando con un modo de respaldo (/b) que permite a Robocopy anular la configuración de permisos de archivos y carpetas (ACL). Esto permite la copia de archivos a los que de otro modo no tendría acceso.

robocopy '.\Xonotic OST (OGG)' Sintonic5 /b

El parámetro /zb inicia el proceso de copiado en modo reiniciable. En caso de que el acceso al fichero sea denegado, se inicia el modo de respaldo:

robocopy '.\Xonotic OST (OGG)' Sintonic6 /zb

Como ya hemos dicho, estos no son más que unos ejemplos. Todos los parámetros y posibilidades de Robocopy están expuestos en la documentación oficial de Microsoft.

Buscando alternativas a Robocopy para copiar y mover ficheros dentro del mismo subdirectorio

Robocopy es una herramienta centrada sobre todo en hacer espejos o migrar ficheros de una ruta a otra, así que su uso para ficheros que se encuentran dentro de un mismo directorio llega a ser aparatoso, y eso si se consigue. Para facilitar el copiar y el mover ficheros dentro de un mismo directorio, emplearemos un par de alternativas a Robocopy.

Para copiar un fichero es posible emplear copy-item:

copy-item heavymetal.ogg copia-heavymetal.ogg

Mientras que para mover está a disposición move-item:

copy-item copia-heavymetal.ogg heavymetal-movido.ogg

Conclusión

Robocopy es una herramienta interesante para realizar copias de seguridad de las carpetas más importantes para el usuario. Aquí nos hemos ceñido a un uso básico, pero el destino no tiene por qué ubicarse en la misma unidad ni en el mismo equipo, por lo que puede atesorar más de lo que aparenta.

Imagen de portada: Pixabay

Apasionado del software en general y de Linux en particular. El Open Source, la multiplataforma y la seguridad son mis especialidades.

Lo más leído