Skocz do zawartości

Automatyczny backup bazy.

Polecane posty

Witam, mam skrypt, który mi tworzy kopie bazy Subiekta oraz Sello, a następnie kopiuje całość na dysk sieciowy. Chciałbym do niego dodać kasowanie plików starszych niż 7dni. Ma ktoś jakiś pomysł jak to dodać?

 

@echo off
@cls
@echo *******************************************************************************
@echo * Backup database                                                             *
@echo *******************************************************************************
@echo.

@set Dir=D:\AutomaticBackup\
@set DbName1=**
@set DbName2=**
@set Now=%Time: =0%
@set DateTime=%date:~0,4%%date:~5,2%%date:~8,2%_%Now:~0,2%%Now:~3,2%%Now:~6,2%

@set BackupFile1=%DbName1%_%DateTime%.bak
@set BackupPath1=%Dir%%BackupFile1%

@set BackupFile2=%DbName2%_%DateTime%.bak
@set BackupPath2=%Dir%%BackupFile2%

osql -U** -P** -S (local)\insertgt -Q "BACKUP DATABASE %DbName1% TO DISK = '%BackupPath1%'"
osql -U** -P** -S (local)\insertgt -Q "BACKUP DATABASE %DbName2% TO DISK = '%BackupPath2%'"

COPY %BackupPath1% \\ZBOX\Dane\Backups\Insert\%BackupFile1% /Y
COPY %BackupPath2% \\ZBOX\Dane\Backups\Insert\%BackupFile2% /Y

Link to postu
  • 4 miesiące temu...

Kasowanie backupów po dacie może być zdradliwe.

Np. pojedziesz na wakacje na 2 tygodnie, przez ten czas żaden backup nie będzie wykonywany, wracasz, a tu ci kasuje wszystkie backupy,bo są starsze niż 7 dni i zostajesz z niczym.

Osobiście stosuję inne rozwiązanie - zostawianie określonej ilości backupów, np. 15 ostatnich.

Jako, że wykorzystuję tą metodę do kasowania backupów różnych programów na różnych platformach, zrobiłem sobie mały skrypt w PHP, dzięki czemu działa i pod windowsem i pod linuxem.

 

Opiszę, dla osób zainteresowanych jak to zrobić pod windowsem:

 

1. Tworzymy na dysku folder, np. o nazwie Backup, a w nim foldery PHP i bin. Założenie jest takie, że do tego folderu Backup trafiają wszystkie zrobione przez nas backupy. Podsumowując, jeśli mamy już folder z backupami z Sello, tworzymy w nim tylko foldery PHP i bin.

 

2. Ściągamy z http://windows.php.net/download/ archiwum z PHP 5, w wersji dowolnej, może być najnowsza (ściągamy plik zip (binaria)).

 

3. Rozpakowujemy wszystko do folderu Backup\PHP

 

4. Uruchamiamy php.exe i patrzymy, czy nie wywala błędu. Jeśli wywala, prawdopodobnie należy doinstalować ze strony Microsoftu Microsoft Visual C++ Redistributable Package, w wersji 2010 lub wyższej, najlepiej próbować do skutku.

 

5. Jak już działa nam PHP tworzymy w folderze Backup\bin plik kasujStareBackupy_I01.php

 

6. Jak wiadomo backup Insertu tworzy dwa pliki o rozszerzeniach .I01 oraz .iar zatem potrzebować będziemy dwóch plików kasujących - do każdego z rozszerzeń. Oczywiście jak ktoś chce, może to sobie skopiować do jednego pliku PHP, ale ja używam osobnych dla każdego rozszerzenia, dla jasności i przenośności rozwiązania.

 

7. W pliku kasujStareBackupy_I01.php wpisujemy:

<?php
// Wyszukuje pliki w podanej sciezce, a nastepnie usuwa stare pliki, tak aby
// pozostala zadana liczba najmlodszych plikow.
error_reporting(E_ALL);
ini_set("display_errors","stdout");

$sciezka= "D:\Backup\*.i01";
$ileOstatnichZachowac=15;

$plikiZnalezione=glob($sciezka);
$plikiZnalezioneiCzasy=array(); // czas_pliku=>nazwa_pliku
foreach($plikiZnalezione as $plik){
if (is_file($plik)){
	$plikiZnalezioneiCzasy[filemtime($plik)]=$plik;
}
}
ksort($plikiZnalezioneiCzasy);
$iloscPlikow=count($plikiZnalezioneiCzasy);
if ($iloscPlikow>$ileOstatnichZachowac){
$usunDoIndexuNr=$iloscPlikow-$ileOstatnichZachowac;
$i=0;
foreach($plikiZnalezioneiCzasy as $czas=>$nazwa){
	if ($i==$usunDoIndexuNr) break;
	else{			
		unlink($nazwa);
		$i++;
	}
}
}

?>

 

następnie kopiujemy ten plik i nazywamy kopię kasujStareBackupy_IAR.php

a w niej zmieniamy "$sciezka" na

$sciezka= "D:\Backup\*.iar";

 

8. W folderze Backup\bin tworzymy plik UruchomKasowanieBackupu.bat

a w nim

@echo off
D:
cd "D:\Backup\bin"
..\php\php.exe kasujStareBackupy_IAR.php
..\php\php.exe kasujStareBackupy_I01.php

 

Oczywiście powyższe pliki zakładają, że macie backup na dysku D: w folderze Backup.

W innym wypadku należy odpowiednio zmienić ścieżki w plikach.

 

9. Testujemy uruchamiając UruchomKasowanieBackupu.bat

 

10. Jeśli ładnie działa, tworzymy zadanie w Harmonogramie zadań, do uruchamiania np. raz dziennie pliku UruchomKasowanieBackupu.bat

 

U mnie działa jak należy od bardzo dawna.

 

Opis brzmi bardzo rozbudowanie, ale potrzebujemy tylko 3 plików. No i bardzo łatwo zmieniając ścieżkę stosować to rozwiązanie do każdego innego backupu, czy to w zipie, czy rarze, tarze......

 

Pozdrawiam

 

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...