Backup DELL WXP.bat

De Wikijoan
Dreceres ràpides: navegació, cerca

El fitxer s'ha modificat per tal d'aconseguir els següents requisits:

El problema que hi ha en el script original és que matxaca el fitxer de destí, i si he canviat el config, aleshores de fet la informació es perd en el backup destí. Podria pensar que tinc una còpia i en realitat no tenir-la.

En el fitxer original, en la carpeta C:\Documents and Settings\Administrador\Configuración local\Temp\backup es copien tots els directoris, i quan s'ha fet tota la còpia es comprimeix a un sol fitxer. En el meu cas vull un comprimit per a cada carpeta.

Un altre dels problemes que m'he trobat és entre la distinció de directori i fitxer. Per distingir entre directori i fitxer es buscar un ., però aleshores C:\pixtuff_2.3 no és un directori vàlid. Els directoris es copien amb XCOPY, i els fitxers amb COPY.

@ECHO OFF

REM backup_DELL_WXP.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
REM SET dirTempBackup=%TEMP%\backup
SET dirTempBackup=C:\backup

SET filBackupConfig=backup_DELL_WXP_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%

SET SERVER=192.168.1.130
REM 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_DELL_WXP%DATE%.log
  GOTO End
)
IF NOT EXIST "%exe7Zip%" (
  ECHO 7-Zip is not installed in the location: %dir7Zip% >> C:\backup_DELL_WXP%DATE%.log
  ECHO Please update the directory where 7-Zip is installed. >> C:\backup_DELL_WXP%DATE%.log
  GOTO End
)

ECHO Starting to copy files. >> C:\backup_DELL_WXP%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_DELL_WXP%DATE%.log
  ) ELSE (
    ECHO Copiant i comprimint: !Current! >> C:\backup_DELL_WXP%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_DELL_WXP%DATE%.log
		START "Compressing Backup. DO NOT CLOSE" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 %dirTempBackup%\%%~pnxA\%%~pnxA.zip "!Destination!"  >> C:\backup_DELL_WXP%DATE%.log
		ECHO Enviant al servidor via pscp >> C:\backup_DELL_WXP%DATE%.log
		C:\pscp.exe -r -pw **** %dirTempBackup%\%%~pnxA\%%~pnxA.zip joan@%SERVER%:/home/joan/disc_xarxa/DELL_WXP >> C:\backup_DELL_WXP%DATE%.log
		ECHO Cleaning up. >> C:\backup_DELL_WXP%DATE%.log
		IF EXIST "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%"
    ) ELSE (

      REM File. Compte perquè si hi ha un directori amb un punt, fallarà (C:\per ex, pixtuff_2.3)
		SET Destination=%dirTempBackup%		
		COPY /v /y "!Current!" "!Destination!" >> C:\backup_DELL_WXP%DATE%.log
		START "Compressing Backup. DO NOT CLOSE" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 %dirTempBackup%\%%~nxA.zip %dirTempBackup%\%%~nxA  >> C:\backup_DELL_WXP%DATE%.log
		ECHO Enviant al servidor via pscp >> C:\backup_DELL_WXP%DATE%.log
		C:\pscp.exe -r -pw **** %dirTempBackup%\%%~nxA.zip joan@%SERVER%:/home/joan/disc_xarxa/DELL_WXP >> C:\backup_DELL_WXP%DATE%.log
		Cleaning up. >> C:\backup_DELL_WXP%DATE%.log
		IF EXIST "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%"
    )


	ECHO. >> C:\backup_DELL_WXP%DATE%.log
  )
)
ECHO Done copying files. >> C:\backup_DELL_WXP%DATE%.log
ECHO. >> C:\backup_DELL_WXP%DATE%.log


:End
ECHO Finished. >> C:\backup_DELL_WXP%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 WXP -> 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=192.168.1.130, que és la IP del Servidor Ubuntu en la xarxa local de Joan Blanques.

BackupConfig.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.

wget.exe

El servidor SSH està sempre tancat. Per tant, per fer la còpia, el mateix script ha d'engegar el servidor SSH. Això ho faig executant un script PHP. Amb linux això ho faig amb wget, i amb Windows amb un equivalent que he trobat: wget.exe.

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

L'únic problema (solucionable) és que hi ha programat un script per aturar el servidor SSH cada hora, i podria ser que s'aturés mentre estic fent una còpia.


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