Backup BBDD.bat

De Wikijoan
Dreceres ràpides: navegació, cerca

El script Backup_BBDD.bat és el mateix que el que fem servir per a WXP. Tanmateix, com que es correspon a un ordinador remot (institut), només ens valdrà la connexió remota (wikijoan.dyndns.org)

@ECHO OFF

REM backup_BBDD.bat 
REM Version 1.01, 25-11-08, Joan Quintana
REM http://wikijoan.dyndns.org

REM Fa un backup total contra un disc de xarxa (IOMEGA) que está en un servidor SSH en la xarxa local o en la xarxa remota

REM Usage---
REM   > BackupScript

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

REM ---Configuration Options---

REM Location where 7-Zip is installed on your computer.
REM The default is in a folder, '7-Zip' in your Program Files directory.
SET InstallLocationOf7Zip=%ProgramFiles%\7-Zip

REM Usage variables.
SET exe7Zip=%InstallLocationOf7Zip%\7z.exe
SET dirTempBackup=%TEMP%\backup

SET filBackupConfig=backup_BBDD_config.txt

SET DATE=%date /t%
SET Year=%DATE:~8,2%
SET Month=%DATE:~3,2%
SET Day=%DATE:~0,2%
SET DATE=%Day%%Month%%Year%

REM SET SERVER=192.168.1.130
SET SERVER=wikijoan.dyndns.org

REM inicio el servidor SSH en el servidor.
REM wget.exe és la versió per a Windows de wget, i l'he descarregat de http://pages.interlog.com/~tcharron/wgetwin.html
C:\wget.exe http://%SERVER%/admin/prova_script.php


REM Validation.
IF NOT EXIST %filBackupConfig% (
  ECHO No configuration file found, missing: %filBackupConfig% >> C:\backup_BBDD%DATE%.log
  GOTO End
)
IF NOT EXIST "%exe7Zip%" (
  ECHO 7-Zip is not installed in the location: %dir7Zip% >> C:\backup_BBDD%DATE%.log
  ECHO Please update the directory where 7-Zip is installed. >> C:\backup_BBDD%DATE%.log
  GOTO End
)

ECHO Starting to copy files. >> C:\backup_BBDD%DATE%.log
IF NOT EXIST "%dirTempBackup%" MKDIR "%dirTempBackup%"

FOR /f "skip=1 tokens=*" %%A IN (%filBackupConfig%) DO (
  SET Current=%%~A


  IF NOT EXIST "!Current!" (
    ECHO ERROR! Not found: !Current! >> C:\backup_BBDD%DATE%.log
  ) ELSE (
    ECHO Copiant i comprimint: !Current! >> C:\backup_BBDD%DATE%.log

    REM Determine if the entry is a file or directory.
    IF "%%~xA"=="" (
      REM Directory.
		SET Destination=%dirTempBackup%\%%~pnxA
		XCOPY "!Current!" "!Destination!" /v /c /i /g /h /q /r /y /e >> C:\backup_BBDD%DATE%.log
		START "Compressing Backup. DO NOT CLOSE" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 %dirTempBackup%\%%~pnxA\%%~pnxA.zip "!Destination!"  >> C:\backup_BBDD%DATE%.log
		ECHO Enviant al servidor via pscp >> C:\backup_BBDD%DATE%.log
		C:\pscp.exe -r -pw **** %dirTempBackup%\%%~pnxA\%%~pnxA.zip joan@%SERVER%:/home/joan/disc_xarxa/BBDD >> C:\backup_BBDD%DATE%.log

    ) ELSE (

      REM File.
		SET Destination=%dirTempBackup%\!Current:~0,1!%%~pnxA
		COPY /v /y "!Current!" "!Destination!" >> C:\backup_BBDD%DATE%.log
		START "Compressing Backup. DO NOT CLOSE" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 %dirTempBackup%\!Current:~0,1!%%~pnxA.zip "!Destination!"  >> C:\backup_BBDD%DATE%.log
		ECHO Enviant al servidor via pscp >> C:\backup_BBDD%DATE%.log
		C:\pscp.exe -r -pw **** %dirTempBackup%\!Current:~0,1!%%~pnxA.zip joan@%SERVER%:/home/joan/disc_xarxa/BBDD >> C:\backup_BBDD%DATE%.log

    )

	ECHO Cleaning up. >> C:\backup_BBDD%DATE%.log
	IF EXIST "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%"
	ECHO. >> C:\backup_BBDD%DATE%.log
  )
)
ECHO Done copying files. >> C:\backup_BBDD%DATE%.log
ECHO. >> C:\backup_BBDD%DATE%.log


:End
ECHO Finished. >> C:\backup_BBDD%DATE%.log
ECHO.

ENDLOCAL

la única cosa que no em funciona és que en el fitxer de configuració, les línies que comencen per # a partir de la segona línia també es pensa que és un directori, i dóna error perquè el directori no existeix. Hauria de trobar la manera comparar el primer caràcter de la fila amb #, però el tema de les expressions regulars és difícil.

Automatitzar les còpies

Aquí l'únic problema és que a vegades estic treballant en el local, i a vegades a casa, doncs és un portàtil. El normal és fer les còpies al local perque la connexió és LAN i a casa la connexió és lenta. Per tant, he de programar una tasca de Windows que s'executi al matí (varios matins tenint en compte que normalment en el portàtil treballo amb Ubuntu).

Penell de control del BBDD -> Tasques planificades

Ho he planificat per tal que s'executi cada 2 dies, a les 11 del matí. Per defecte, he de posar la variable SERVER=wikijoan.dyndns.org, que és la IP del Servidor Ubuntu en la xarxa local de Joan Blanques.

backup_BBDD_config.txt

La idea és que només es copien els directoris amb projectes actius. Els projectes tancats es fa una còpia inicial i ja està. Si un projecte es reobre, aleshores descomentar la línia.


creat per Joan Quintana Compte, novembre 2008

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines