Copia seguridad con archivos .bat (en Windows)

Foro para webmasters: Navegadores web, buscadores, aplicaciones de escritorio y recursos varios...
Responder
gbeltran
Mensajes: 254
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Copia seguridad con archivos .bat (en Windows)

Mensaje por gbeltran »

- Inicio en Windows con el Administrador de discos un disco SSD en MBR, con formato exFat, y le asigno la letra de unidad Z:
- Creo el batch (archivo .bat) de copia de seguridad (copia de los documentos de Nextcloud):

Código: Seleccionar todo

@echo off
Title Copia de Seguridad
echo              =========================================
echo              =                                       =
echo              =         Copia de Seguridad            =
echo              =                                       =
echo              =========================================
echo.
echo Este comando copiara la carpeta de Nextcloud, en este caso, dentro de una nombrada BACKUP en la unidad Z
pause
@echo off

ROBOCOPY %userprofile%\Nextcloud  Z:\BACKUP\Documentos\  /S  /R:0 /w:0

IF ERRORLEVEL 5      GOTO C
IF NOT ERRORLEVEL   5     GOTO Z


:C
cls
@echo off
echo La unidad Z no esta disponible la carpeta BACKUP se creara en la unidad C
pause

ROBOCOPY %userprofile%\Documents  Z:\BACKUP\Documentos\  /S
echo Revise el informe de la copia realizada
pause
:Z
- Ejecuto y listo: copia de seguridad recursiva.
Última edición por gbeltran el 26 Jul 2024, 13:04, editado 1 vez en total.
gbeltran
Mensajes: 254
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Re: Copia seguridad con archivos .bat (en Windows)

Mensaje por gbeltran »

Sin interacción del usuario (comentamos la orden pause):

Código: Seleccionar todo

@echo off
Title Copia de Seguridad
echo              =========================================
echo              =                                       =
echo              =         Copia de Seguridad            =
echo              =                                       =
echo              =========================================
echo.
echo Este comando copiara la carpeta Mis Documentos dentro de una nombrada BACKUP en la unidad Z
[b]REM pause[/b]
@echo off

ROBOCOPY %userprofile%\Nextcloud  Z:\BACKUP\Documentos\  /S  /R:0 /w:0

IF ERRORLEVEL 5      GOTO C
IF NOT ERRORLEVEL   5     GOTO Z


:C 
cls
@echo off
echo La unidad Z no esta disponible la carpeta BACKUP se creara en la unidad C
pause

ROBOCOPY %userprofile%\Documents  Z:\BACKUP\Documentos\  /S
echo Revise el informe de la copia realizada
pause
:Z
Luego, con el administrador de tareas de Windows podemos programar la tarea para que se ejecute de forma periódica a la hora que queramos. Recordar poner la compatibilidad para la versión de Windows que tengamos.
Última edición por gbeltran el 26 Jul 2024, 13:05, editado 1 vez en total.
gbeltran
Mensajes: 254
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Re: Copia seguridad con archivos .bat (en Windows)

Mensaje por gbeltran »

Sigue funcionando la programación perfectamente:
programador_tareas_windows.jpg
programador_tareas_windows.jpg (56.03 KiB) Visto 155 veces
gbeltran
Mensajes: 254
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Re: Copia seguridad con archivos .bat (en Windows)

Mensaje por gbeltran »

Y una versión para Linux (me falta la programación como tarea): viewtopic.php?t=316
gbeltran
Mensajes: 254
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Re: Copia seguridad con archivos .bat (en Windows)

Mensaje por gbeltran »

Una variante que copia la carpeta Documentos, Dropbox y Nextcloud de tu usuario a una carpeta en disco duro externo.

Código: Seleccionar todo

@echo off
Title Copia de Seguridad
echo              =========================================
echo              =                                       =
echo              =         Copia de Seguridad            =
echo              =                                       =
echo              =========================================
echo.
echo Este comando copiara la carpeta Mis Documentos, Nextcloud y tu Dropbox dentro de una nombrada Backup en la unidad Z
REM pause
@echo off
 
ROBOCOPY %userprofile%\Documents  Z:\Backup  /S  /R:0 /w:0
ROBOCOPY %userprofile%\Dropbox Z:\Backup\Dropbox  /S  /R:0 /w:0
ROBOCOPY %userprofile%\Nextcloud  Z:\Backup\Nextcloud\  /S  /R:0 /w:0
 
IF ERRORLEVEL 2      GOTO C
IF NOT ERRORLEVEL   2     GOTO Z
 
 
:C 
cls
@echo off
echo La unidad Z no esta disponible. Se crearán en C:\Backup2
pause
 
ROBOCOPY %userprofile%\Documents  C:\Backup\ /S
ROBOCOPY %userprofile%\Dropbox C:\Backup\Dropbox  /S  /R:0 /w:0
ROBOCOPY %userprofile%\Nextcloud C:\Backup\Nextcloud  /S  /R:0 /w:0
echo Revise el informe de la copia realizada
pause
:Z
NOTA: En el script original tenía el error del número de error: estaba a 5. Ahora está a 2. Esta es la explicación:
Parece que hay un problema con la forma en que tu script verifica el error después de los comandos `ROBOCOPY`. En tu script, estás usando `IF ERRORLEVEL 5 GOTO C` y `IF NOT ERRORLEVEL 5 GOTO Z`.

El comando `IF ERRORLEVEL n` en batch script comprueba si el nivel de error es `n` o más. Entonces, `IF ERRORLEVEL 5` se traduce a "si el nivel de error es 5 o más".

`ROBOCOPY` devuelve `1` si se copiaron archivos con éxito y `0` si no se necesitaba copiar ningún archivo. Los códigos de error de `2` a `16` indican varios errores. Por lo tanto, tu script saltará a la etiqueta `:C` si `ROBOCOPY` devuelve `5` o más, lo que indica un error.

Por otro lado, `IF NOT ERRORLEVEL 5` se traduce a "si el nivel de error es menos de 5". Por lo tanto, incluso si `ROBOCOPY` se ejecuta con éxito y copia los archivos (devolviendo `1`), tu script saltará a la etiqueta `:Z`.

Para solucionar este problema, puedes cambiar tu script para que salte a la etiqueta `:Z` solo si `ROBOCOPY` devuelve `0` o `1`, lo que indica que no hubo errores.
Responder