Po własnych modyfikacjach udostępniam plik skrypt do backupu bazy serwera MS SQL oraz automatycznej kompresji tego backupu wraz z ustawieniem ilości przechowywanych dni plików z backupem (w pliku 60 dni).
Wystarczy utworzyć plik, ustawić zadanie do harmonogramu zadań (task scheduler) i kopia zacznie się tworzyć o wybranej przez nas godzinie.
Nazwa pliku tworzona jest z {nazwy bazy danych} + '_’ + {znacznik czasu} + ’.’ + {ustawione rozszerzenie – w skrypcie bak} + ’.7z’
Proszę zwrócić uwagę na ustawienie odpowiednich:
- Ścieżki do katalogu z backupem BACKUPPATH
- Nazwy bazy danych jaką chcemy archiwizować DATABASE
- Ścieżki do programu archiwizującego ZIPPATH
- Adresu sieciowego lub nazwy serwera SERVERNAME
- Rozszerzenia pliku backupu przed kompresją przez program archiwizujący EXTENSION
echo off
:: DANE
set BACKUPPATH=D:\BackupMSSQL
set DATABASE=platnik
set SERVERNAME=localhost
:: problem z godziną bez zera wiodacego
:: set DATESTAMP=%DATE%_%TIME:~0,2%-%TIME:~3,2%
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set wmidatetime=%%a
set DATESTAMP=%wmidatetime:~0,14%
:: data rrrr-mm-dd, time gg:mm:ss,ms
set FILENAME=%BACKUPPATH%\%DATABASE%_%DATESTAMP%.bak
set ZIPPATH=C:\Program Files (x86)\7-Zip
::Rozszerzenie pliku
set EXTENSION=bak
:: -----------Backup bazy danych----------
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASE%] TO DISK = N'%FILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASE% backup', NOSKIP , STATS = 10, NOFORMAT"
:: -----------Pakowanie plików i usuwanie-----------
for /f %%F in ('dir %BACKUPPATH%\*.%EXTENSION% /b') do echo %%F & del %BACKUPPATH%\%%F.7z & "%ZIPPATH%\7z.exe" a %BACKUPPATH%\%%F.7z %BACKUPPATH%\%%F & del %BACKUPPATH%\%%F
::-----------Usuwanie starych plików-----------
:: Wyszukiwanie po dacie (usuwa starsze niż 30 dni)
forfiles /p %BACKUPPATH% /d -30 /c "cmd /c del @path"
:: usuwa najstarsze pliki (pozostawia 60 najmłodszych backupów)
for /f "skip=60 delims=" %%F in ('dir %BACKUPPATH%\*.* /b/o-d') do del %BACKUPPATH%\%%F
Plik ten napisany został przez pana Tomasza Zdziech