Cómo hacer una copia de seguridad de nuestros datos en una carpeta por día. Cada día se creará una carpeta y se hará la copia de seguridad a esa nueva carpeta. Para ello usaremos un fichero de proceso por lotes .bat y la herramienta Robocopy.

Requisitos para hacer copia de seguridad con Robocopy a una nueva carpeta por cada día en equipo Windows

Necesitaremos disponer de la herramienta Robocopy. A día de hoy Microsoft ha «descontinuado» el producto y no tiene nuevas versiones desde hace varios años, pero la última es perfectamente válida y ha sido probada en entornos Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10 y Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2016.

El fichero Robocopy debe estar o bien en la carpeta donde guardemos el script de proceso por lotes .bat o bien en cualquier otro sitio pero especificado en la variable PATH del sistema.

El usuario con el que ejecutaremos el script debe tener suficientes privilegios en el sistema operativo Windows como para acceder a las carpetas origen, crear carpetas en el destino y copiar ficheros.

En caso de no disponer de Robocopy o no querer usar esta herramienta podemos emplear el script que explicamos a continuación y cambiar Robocopy por la herramienta de la línea de comandos que hayamos elegido para la copia de los ficheros (xcopy, teracopy, …).

Script .bat de proceso por lotes para crear carpeta cada día y ejecutar Robocopy con los parámetros apropiados

El script que mostramos a continuación se copiará y pegará dentro de un fichero .bat, por ejemplo «copia_seguridad_diaria.bat». Esto se puede hacer con cualquier editor de texto plano, como el propio Notepad de Windows:

Explicando un poco el script:

  • En primer lugar obtiene la fecha actual del sistema con un formato concreto en la variable dia_actual.
  • Establecemos el origen de la copia en las varibles origen_backup y destino_backup. En el caso de destino_backup se compondrá de la unidad y carpeta raíz más el día actual (día, mes y año).
  • Crea la carpeta de destino usando como nombre la ruta raíz y el día actual.
  • Ejecuta Robocopy con los parámetros que le hayamos indicado.
  • Si devuelve error lo muestra en pantalla.
  • Dejamos los «pause» para depurar y ver si el script funciona correctamente. Cuando funcione es muy importante quitarlo para que el script no quede ejecutándose continuamente a la espera de una pulsación (que nunca llegará si lo ejecutamos con una tarea programada).
Script .bat de proceso por lotes para crear carpeta cada día y ejecutar Robocopy con los parámetros apropiados

Como hemos indicado en los requisitos, el fichero robocopy.exe debe estar en la misma ubicación que el script copia_seguridad_diaria.bat o bien su ubicación debe estar en la variable PATH del sistema o bien deberemos indicar la ruta donde está ubicado en el propio script. Lo más sencillo es que esté en la misma ubicación que el script.

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Abriremos el Programador de tareas, desde el Panel de control y agregaremos una nueva tarea:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Marcaremos «Ejecutar tanto si el usuario inició sesión como si no» para que la tarea se ejecute aunque el usuario no haya iniciado sesión y marcaremos también «Ejecutar con los privilegios más altos»:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

En la pestaña «Desencadenadores» pulsaremos en «Nuevo»:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Elegiremos la frecuencia de ejecución de la tarea, los días de la semana, la hora en la que queramos que se ejecute (a ser posible cuando no haya usuarios conectados), etc.:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

En la pestaña «Acciones» pulsaremos en «Nueva»:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Pulsaremos en «Examinar» y elegiremos el fichero .bat creado anteriormente (en nuestro copia_seguridad_diaria.bat):

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Es conveniente y recomendable indicar en «Iniciar en» la ruta donde tenemos alojado el script. En algunos sistemas operativos Windows si no se elige esta ruta falla la ejecución de la tarea:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

En la pestaña «Condiciones» marcaremos «Activar el equipo para ejecutar esta tarea»:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Por último, en la pestaña «Configuración» podremos indicar más opciones para la tarea como que se detenga si se ejecuta durante un tiempo determinado o que solo se ejecute una única instancia de la tarea (por si se solapan en horario, para que no se ejecute a la vez):

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Una vez que aceptemos en la ventana anterior nos solicitará usuario y contraseña para la tarea. Indicaremos uno que tenga permisos suficientes para copiar archivos del origen y crear carpeta y pegar los archivos en el destino:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

A partir de ahora el script se ejecutará en la programación y periodicidad indicada y creará una carpeta por día con la siguiente estructura:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Cuando la copia finalice mostrará este mensaje en pantalla:

Programación de tarea para ejecutar diariamente la copia de seguridad en Windows

Si resulta molesto será suficiente con quitar las líneas:

msg * Copia realizada correctamente.

y

msg * Copia realizada correctamente sin cambios.

Y como hemos dicho anteriormente, para que el script funcione adecuadamente, se inicie y se cierre, hay que quitar los «pause» que hayamos puesto, que solo sirven para depurar el script.