[BATCH] Script para backups incrementales.

Iniciado por jorma16, 31 Julio 2012, 12:21 PM

0 Miembros y 1 Visitante están viendo este tema.

jorma16

Joder EleKtro... Eres un CRACK tío!! Que grande... En alguna parte tendré que dejar constancia de que el Script es tuyo porque... Que guapo... Muchisimas gracias, es exactamente lo que andaba buscando...

Ahora lo que haré será aprender este lenguaje haciendo Scripts mas sencillitos.. Y iré posteando por aquí las dudas porque me ha parecido un lenguaje muy interesante...

guajolote_vengador

#11
Saludos a todos.

Estuve probando el script y tomando en cuenta que soy muy nob, tal vez entendí mal, por lo que expongo lo que entendí: el code primero hace una copia de perfiles en archivos 7z al directorio backups y genera un listado en txt de los archivos respaldados en el 7z, esto si es el primer backup, si los archivos 7z ya existen, entonces crea otro listado indicando cuales archivos han sido modificados y agregados a otro archivo 7z sin borrar el existente, y en el listado agrega los archivos modificados en orden alfabético.

Pero cuando yo hago esto (sin haber hecho un backup previo) solo me genera los archivos txt pero no los 7z, y si lo ejecuto por segunda vez me agrega las líneas a los archivos txt pero sigue sin generar el 7z.

nota: el 7z.exe lo copie a la ruta correcta y las carpetas las cree en las rutas descritas en las variables.

Entonces que estoy haciendo mal.


Código (DOS) [Seleccionar]
@Echo OFF
Title Server Backup By Elektro H@cker
Setlocal enabledelayedexpansion

Set "BACKUPS=C:\Users\Administrador\Desktop\Backups"
Set "PERFILES=C:\Users\Administrador\Desktop\Perfiles"
Set "SevenZip=%WINDIR%\System32\7z.exe"

PUSHD "%PERFILES%"
FOR /F "Tokens=*" %%# in ('DIR /B /AD') Do (
PUSHD "%%#"
If not exist "%BACKUPS%\%%#*7z" (Call :First_Backup "%%#") ELSE (Call :Next_Backup "%%#")
POPD
)
Goto :FIN

:First_Backup
Echo: [+] Comprimiendo el perfil de %1 | MORE
"%SevenZip%" u -mx=9 -ms=off -t7z "%BACKUPS%\%~1.1.7z" "%PERFILES%\%~1" >NUL
FOR /R %%@ in (*) Do (FOR /F "tokens=1-4,* delims=/ " %%A in ('Echo %%~t@') do (Echo %%C/%%B/%%A [%%D] (1^) ^| %%~nx@ >> "%BACKUPS%\%%#.txt"))
Goto:EOF

:Next_Backup
For /F "tokens=2 delims=." %%_ in ('Dir /B "%BACKUPS%\%~1*7z"') do (Set /A "LastNum=%%_", "Lastnum+=1")
FOR /R %%@ in (*) Do (
FOR /F "tokens=1-5,* delims=/: " %%A in ('Echo %%~t@;%%@') do (
Find /I "%%~nxF" "%BACKUPS%\%~1.txt" >NUL && (
For /F "Tokens=1-4,* Delims=()[] " %%a in ('Type "%BACKUPS%\%~1.txt" ^| Find /I "%%~nxF"') do (
set "Date=%%a"
Set "Hour=%%b"
IF "%%C%%B%%A%%D%%E" GTR "!DATE:/=!!Hour::=!" (
Type "%BACKUPS%\%~1.txt" | FIND /I /V "%%~nxF" > "%TEMP%\%%#.txt"
Echo %%C/%%B/%%A [%%D:%%E] (!LastNum!^) ^| %%~nx@ >> "%TEMP%\%%#.txt"
Move /Y "%TEMP%\%%#.txt" "%Backups%\%~1.txt" >NUL
)
)
) || (Echo %%C/%%B/%%A [%%D:%%E] (!LastNum!^) ^| %%~nxF >> "%Backups%\%~1.txt")
)
)
Echo: [+] Comprimiendo el perfil de %1 | MORE
"%SevenZip%" u -mx=9 -ms=off -t7z "%BACKUPS%\%~1.%Lastnum%.7z" "%PERFILES%\%~1" >NUL
SORT /+25 "%BACKUPS%\%~1.txt" > "%TEMP%\%~1.txt"
Move /Y "%TEMP%\%~1.txt" "%BACKUPS%\%~1.txt" >NUL
Goto :EOF

:FIN
Echo: Ha finalizado la creacion de copias de seguridad. | MORE
Timeout /T 30 || Pause
Exit

Eleкtro

¿Pero has copiado también el 7z.dll a la carpeta system32? :¬¬ Una aplicación sin sus librerías poco va a poder hacer XD

Saludos








guajolote_vengador

:o Jajaja!, Que atarantado me vi.

Efectivamente era eso.

Doble gracias, por el code y por la ayuda.


Saludos.