Tägliche Vollsicherung per Batch mit Datum im Zielordner
08.04.2010
21:07:30 Uhr8519 Aufrufe
4 Antworten
21:07:30 Uhr
4 Antworten
Hilfreich +3
Es geht in 1. Linie darum wie man einen Ordner samt aktuellen Datum erstellt um. Hier im Beispiel geht es um die tägliche Sicherung von z.b. Lexware/Sybase Server.
zu Source.:
Hier legt Ihr das Quellverzeichnis fest woher die Daten kommen
zu Dest:
Hier wird das Ziel Verzeichnis festgelegt
zu if not exist:
hier wird geprüft ob das Datum bzw das Verzeichniss mit dem Datum schon vorhanden ist wenn nicht wird es erstellt
zu net stop:
Wird der Sybase Server von Lexware gestopt.
Xcopy vs. Robocopy
das ganze wäre auch mit Robocopy möglich .
und da es immer wieder Datenjunkies gibt, noch der script dazu wie ihr die täglichen Backups in Monatesordner verschiebt und den Aktuellen "Sicherungsordner" löschen könnt:
Was leider nicht Funktioniert bzw. noch keine Lösung vorhanden ist. Monat 12 ( Dezember) ,da das Script im neuen Jahr erst läuft wird der Ordner als Dezember_2010 gekennzeichnet.
01.
@ECHO OFF 02.
REM Setze Verzeichnisse 03.
SET SOURCE=D:\Datendisk\LEXWARE\Datenbank 04.
SET DEST=D:\Datendisk\lexware-datenbank-backup 05.
REM Erstelle Zielpfad, falls nicht vorhanden 06.
if not exist %Dest%\%Date% Md %DEST%\%Date% 07.
REM Stop DB Server 08.
net stop ASANYS_LXDBSRV 09.
REM Kopiere Verzeichnis 10.
xcopy %SOURCE% %DEST%\%Date% /c/s/r/d/y/i 11.
REM Kopiere Daten von S2 nach S1 12.
robocopy "%DEST%" z: /mir 13.
REM 14.
REM Starte DB Server 15.
net start ASANYS_LXDBSRVzu Source.:
Hier legt Ihr das Quellverzeichnis fest woher die Daten kommen
zu Dest:
Hier wird das Ziel Verzeichnis festgelegt
zu if not exist:
hier wird geprüft ob das Datum bzw das Verzeichniss mit dem Datum schon vorhanden ist wenn nicht wird es erstellt
zu net stop:
Wird der Sybase Server von Lexware gestopt.
Xcopy vs. Robocopy
das ganze wäre auch mit Robocopy möglich .
und da es immer wieder Datenjunkies gibt, noch der script dazu wie ihr die täglichen Backups in Monatesordner verschiebt und den Aktuellen "Sicherungsordner" löschen könnt:
01.
set jahr=%date:~-4% 02.
set monat=%date:~-7,2% 03.
if %monat%==01 set month=Dezember 04.
if %monat%==02 set month=Januar 05.
if %monat%==03 set month=Februar 06.
if %monat%==04 set month=Maerz 07.
if %monat%==05 set month=April 08.
if %monat%==06 set month=Mai 09.
if %monat%==07 set month=Juni 10.
if %monat%==08 set month=Juli 11.
if %monat%==09 set month=August 12.
if %monat%==10 set month=September 13.
if %monat%==11 set month=Oktober 14.
if %monat%==12 set month=November 15.
mkdir D:\LX-Monatsbackups\%month%_%jahr% 16.
xcopy D:\Datendisk\lexware-datenbank-backup\*.* D:\LX-Monatsbackups\%month%_%jahr%\ /c/d/e/h/r/o/y 17.
rd /s /q D:\Datendisk\lexware-datenbank-backup\ 18.
md D:\Datendisk\lexware-datenbank-backup 19.
rd /s /q Z:\lexware-datenbank-backup\ 20.
md Z:\lexware-datenbank-backupWas leider nicht Funktioniert bzw. noch keine Lösung vorhanden ist. Monat 12 ( Dezember) ,da das Script im neuen Jahr erst läuft wird der Ordner als Dezember_2010 gekennzeichnet.
bastla schreibt am 08.04.2010 um 21:39:53 Uhr
Hallo education!
erledigen lassen ...
Mit der Benennung %month%_%jahr% (abgesehen von der denglischen Variablennamen-Kombination, die mir gelegentlich auch passiert
) wäre ich allerdings (besonders in dieser Reihenfolge) nicht wirklich happy (lässt sich nicht vernünftig sortieren).
Noch eine Anmerkung zu den Zeilen 5 und 6 des ersten Scripts: Schaut zwar so nach mehr aus, aber: Wenn Du sie einfach weglässt wird's keiner merken ...
Grüße
bastla
Was leider nicht Funktioniert bzw. noch keine Lösung vorhanden ist. Monat 12 ( Dezember) ,da das Script im neuen Jahr erst läuft wird der Ordner als Dezember_2010 gekennzeichnet.
Sollte sich doch durchif %monat%==01 (set month=Dezember & set /a jahr-=1)Mit der Benennung %month%_%jahr% (abgesehen von der denglischen Variablennamen-Kombination, die mir gelegentlich auch passiert
Noch eine Anmerkung zu den Zeilen 5 und 6 des ersten Scripts: Schaut zwar so nach mehr aus, aber: Wenn Du sie einfach weglässt wird's keiner merken ...
Grüße
bastla
Biber schreibt am 08.04.2010 um 21:44:12 Uhr
Moin education,
die Sicherung des Dezembers des Vorjahres im Januar sollte sich durch eine Erweiterung der Skriptzeile 03 "IF %monat%==01 ..." berücksichtigen lassen.
Grüße
Biber
P.S. es würde mich wahnsinnig machen, in einem Schnipsel zeitgleich zwei Variablen namens %month% und %jahr% im Auge zu behalten.
Wahlweise %monat% und %jahr% oder aber %month% und %year% würden bei mir weniger Tippfehler provozieren.
[edit] @bastla *lautlach* Wollen wir doch im Zirkus auftreten? [/edit]
die Sicherung des Dezembers des Vorjahres im Januar sollte sich durch eine Erweiterung der Skriptzeile 03 "IF %monat%==01 ..." berücksichtigen lassen.
.... if %monat%==01 set "month=Dezember" && Set /a "jahr-=1" ...Grüße
Biber
P.S. es würde mich wahnsinnig machen, in einem Schnipsel zeitgleich zwei Variablen namens %month% und %jahr% im Auge zu behalten.
Wahlweise %monat% und %jahr% oder aber %month% und %year% würden bei mir weniger Tippfehler provozieren.
[edit] @bastla *lautlach* Wollen wir doch im Zirkus auftreten? [/edit]
hi,
also mit der Vollsicherung hab ich mich auch die letzten Tage beschäftigt und ich bin zu diesem Code gekommen (mit Hilfe von Biber und Bastla =D)
@echo off
cls
cd\
set Quelle=0
set Ziel=0
echo Bitte geben Sie den Quellpfad an:
echo.
set /p Quelle=
echo.
echo Bitte geben Sie den Zielpfad für das Backup an:
echo.
set /p Ziel=
echo.
set Zielunterverz=%date:~6%-%date:~3,2%-%date:~0,2%
set Ordner=%date:~6%-??-??
set Anzahl=5
xcopy "%Quelle%" "%Ziel%%Zielunterverz%" /s /c /i /h /k /o /x /y
pause
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Ziel%%Ordner%"') do rd /s /q "%Ziel%%%i"
echo. Am %Zielunterverz% wurde erfolgreich gesichert. >> "%Ziel%\Backupsicherungen.log"
echo. >> "%Ziel%\Backupsicherungen.log"
echo.:::::::::::::::::::::::::::::::::::::::::: >> "%ziel%\Backupsicherungen.log"
echo. >> "%Ziel%\Backupsicherungen.log"
pause
In diesem Fall hab ich es noch so gemacht, dass der User, den Quell- und den Zielpfad selbst bestimmen kann....
Und zum Schluss wird noch was in ein Logfile geschrieben.
LG
Batchliebhaber
also mit der Vollsicherung hab ich mich auch die letzten Tage beschäftigt und ich bin zu diesem Code gekommen (mit Hilfe von Biber und Bastla =D)
@echo off
cls
cd\
set Quelle=0
set Ziel=0
echo Bitte geben Sie den Quellpfad an:
echo.
set /p Quelle=
echo.
echo Bitte geben Sie den Zielpfad für das Backup an:
echo.
set /p Ziel=
echo.
set Zielunterverz=%date:~6%-%date:~3,2%-%date:~0,2%
set Ordner=%date:~6%-??-??
set Anzahl=5
xcopy "%Quelle%" "%Ziel%%Zielunterverz%" /s /c /i /h /k /o /x /y
pause
for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Ziel%%Ordner%"') do rd /s /q "%Ziel%%%i"
echo. Am %Zielunterverz% wurde erfolgreich gesichert. >> "%Ziel%\Backupsicherungen.log"
echo. >> "%Ziel%\Backupsicherungen.log"
echo.:::::::::::::::::::::::::::::::::::::::::: >> "%ziel%\Backupsicherungen.log"
echo. >> "%Ziel%\Backupsicherungen.log"
pause
In diesem Fall hab ich es noch so gemacht, dass der User, den Quell- und den Zielpfad selbst bestimmen kann....
Und zum Schluss wird noch was in ein Logfile geschrieben.
LG
Batchliebhaber
aih schreibt am 09.04.2010 um 16:35:49 Uhr
In den Beispiel wird die Sicherung einer Lexware Pro Datenbank beschrieben. Ich halte es jedoch für gefährlich die Datenbank zu stoppen, ohne zu wissen, ob nicht doch noch ein Benutzer das Programm offen hat oder vergessen hat Lexware zu beenden. Wenn dann die Datenbank unter den Füßen weggezogen wird, kann das ernste Konsequenzen haben. Es gibt für die Sicherung von Lexware Pro (und Premium) Tools (z.B. BackupLX Pro), die die Datenbank im laufenden Betrieb konsistent und transaktionssicher sichern können.
Grüße
Andreas
Grüße
Andreas











89485schreibt am 09.04.2010 um 12:01:33 Uhr