education
Goto Top

Tägliche Vollsicherung per Batch mit Datum im Zielordner

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.


@ECHO OFF
REM Setze Verzeichnisse
SET SOURCE=D:\Datendisk\LEXWARE\Datenbank
SET DEST=D:\Datendisk\lexware-datenbank-backup
REM Erstelle Zielpfad, falls nicht vorhanden
if not exist %Dest%\%Date% Md %DEST%\%Date%
REM Stop DB Server
net stop ASANYS_LXDBSRV
REM Kopiere Verzeichnis
xcopy %SOURCE% %DEST%\%Date% /c/s/r/d/y/i
REM Kopiere Daten von S2 nach S1
robocopy "%DEST%" z: /mir  
REM
REM Starte DB Server
net start ASANYS_LXDBSRV

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:

set jahr=%date:~-4%
set monat=%date:~-7,2%
if %monat%==01 set month=Dezember
if %monat%==02 set month=Januar
if %monat%==03 set month=Februar
if %monat%==04 set month=Maerz
if %monat%==05 set month=April
if %monat%==06 set month=Mai
if %monat%==07 set month=Juni
if %monat%==08 set month=Juli
if %monat%==09 set month=August
if %monat%==10 set month=September
if %monat%==11 set month=Oktober
if %monat%==12 set month=November
mkdir D:\LX-Monatsbackups\%month%_%jahr%
xcopy D:\Datendisk\lexware-datenbank-backup\*.* D:\LX-Monatsbackups\%month%_%jahr%\ /c/d/e/h/r/o/y
rd /s /q D:\Datendisk\lexware-datenbank-backup\
md D:\Datendisk\lexware-datenbank-backup
rd /s /q Z:\lexware-datenbank-backup\
md Z:\lexware-datenbank-backup

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.

Content-Key: 140183

Url: https://administrator.de/contentid/140183

Printed on: April 25, 2024 at 23:04 o'clock

Member: bastla
bastla Apr 08, 2010 at 19:39:53 (UTC)
Goto Top
Hallo education!
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 durch
if %monat%==01 (set month=Dezember & set /a jahr-=1)
erledigen lassen ...
Mit der Benennung %month%_%jahr% (abgesehen von der denglischen Variablennamen-Kombination, die mir gelegentlich auch passiert face-wink) 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 ... face-wink

Grüße
bastla
Member: Biber
Biber Apr 08, 2010 at 19:44:12 (UTC)
Goto Top
Moin education,

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]
Mitglied: 89485
89485 Apr 09, 2010 at 10:01:33 (UTC)
Goto Top
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
Member: aih
aih Apr 09, 2010 at 14:35:49 (UTC)
Goto Top
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