elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Batch backuper
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Batch backuper  (Leído 633 veces)
pyxolo

Desconectado Desconectado

Mensajes: 29


Share your tasks.


Ver Perfil
Batch backuper
« en: 4 Diciembre 2023, 12:02 pm »

¡Hola!

Es raro pero me ha pasado con una aplicación que tras ejecutarla varias veces seguidas se me desconfigura totalmente (esto no es nada habitual). Por lo que cada vez que inicio sesión en el equipo ejecuto un script que me genera un backup con las siguientes entradas:

OF = ORIGIN FOLDER (carpeta origen)
DF = DESTINATION FOLDER (carpeta destino)
MAX_BACKUPS = Máximo número de copias de seguridad (para no petarme el disco duro).

Código
  1. @echo off
  2.  
  3. setlocal enabledelayedexpansion
  4.  
  5. set OF=ORIGIN\FOLDER\PATH
  6. set DF=DESTINATION\FOLDER\PATH
  7. set /a MAX_BACKUPS=10
  8.  
  9. :: check if origin folder exits
  10. if not exist "%OF%" (
  11. goto :quit
  12. )
  13.  
  14. :: create destination folder if it does not exist
  15. if not exist "%DF%" (
  16. mkdir "%DF%"
  17. )
  18.  
  19. :: check if we reached the max limit of backups, if so, delete the very first backup or keep deleting backups until we reach the maximum backups limit minus one (we will create next backup to get the maximum allowed).
  20. :cbf
  21. set /a bfc=0 & for /f "tokens=*" %%F in ('dir /b /a:d "!DF!"') do @(set /a bfc+=1 > nul)
  22. if %bfc% LSS %MAX_BACKUPS% (
  23. goto :skipcbf
  24. )
  25. for /f "delims=" %%F in ('dir %DF% /O-D /TW /B') do set lastbackup=%%F
  26. del /f /q /s "%DF%\%lastbackup%"
  27. for /f "usebackq" %%d in (`"dir "%DF%\%lastbackup%" /ad/b/s | sort /R"`) do rmdir /q /s "%%d"
  28. rmdir /q /s "%DF%\%lastbackup%"
  29. if %bfc% GEQ %MAX_BACKUPS% (
  30. goto :cbf
  31. )
  32.  
  33. :skipcbf
  34. :: generate backup
  35. for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
  36. set "YYYY=%dt:~0,4%"
  37. set "MM=%dt:~4,2%"
  38. set "DD=%dt:~6,2%"
  39. set "HH=%dt:~8,2%"
  40. set "MI=%dt:~10,2%"
  41. set "SS=%dt:~12,2%"
  42. set "TS=%YYYY%-%MM%-%DD%_%HH%-%MI%-%SS%"
  43.  
  44. Xcopy /E /I "%OF%" "%DF%\YOUR_BACKUPNAME.backup_%TS%\"
  45.  
  46. :quit
  47. :: exiting the script

Para ejecutarlo en cada inicio de sesión del equipo:

Código
  1. schtasks /create /SC ONLOGON /TN TASKNAME /TR "BAT/PATH" /F /HRESULT

Muy recomendable que la copia se haga dentro del mismo disco y partición para que la copia sea relativamente rápida. Si no, quizá os compensa establecer otra estrategia de tarea programada.

Un saludo :D


En línea

🍀 What's sauce for the goose is sauce for the gander. 🍀
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines