Automatisches Backup

casim

Sehr aktives Mitglied
26. Juni 2012
5.934
10
AW: Automatisches Backup

Die WaWi kann auch nicht "einfach mal so" den Worker anhalten, denn letztlich ist der "Worker" ein eigenständiges Programm.
Auch DB-Zugriffe kann die WaWi nicht komplett managen. Stell dir eines der externen Programme vor, die hier im Forum kursieren ... auf die hat die WaWi 0 Eingriffsmöglichkeit.
Gleiches gilt im übrigen natürlich auch für event. Client-Zugriffe. Von denen bekommt die "Server-WaWi" gar nichts mit
 

ralph_1

Gut bekanntes Mitglied
12. August 2011
586
5
AW: Automatisches Backup

Von denen bekommt die "Server-WaWi" gar nichts mit
Auch wenn du es sicher anders meinst, ist dieser Punkt einer, der oft falsch kommuniziert wird. Es gibt keine "Server- WaWi". Jede JTL-Wawi-Installation ist gleichwertig, egal ob Worker oder GUI. Alle greifen auf einen Datenbankserver zu.
Eine Instanz von JTL-Wawi kann eine andere nicht anhalten. Wenn ich aber den Worker als Dienst betreibe, kann ich ihn per script stoppen und starten, wann immer ich will. Ob das bei SQLBackupAndFTP weiterhilft, weiß ich nicht, da ich es nicht benutze.
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

Für alle Puristen hier noch was Selbstgelötetes zum Spielen, Umstricken oder Anwenden.^^ (ohne Gewähr)
Es läuft unter Windows7. Vorher lief es unter XP, dort mussten aber die Parameter-Slashes "/" ein Bindestrich "-" sein. Albern aber wahr.
Das Script leistet hier gute Dienste, weil es ältere Backups automatisch löscht. Eine Kopie wird immer auf eine SD geschrieben, die beim Verlassen des Büros praktischerweise mitkommt.
lg
Tom

@echo off
:: Batchskript für die max. stuendliche Sicherung der JTL-Wawi-DB über den Taskplaner.
:: Wird das Sript innerhalb einer Stunde mehrmals gestartet, stimmt der Dateiname nicht
:: mehr, da dieser sich nur jede volle Stunde aendert. Viel Spass damit^^
::
:: ############# Einstellungen Anfang ##############
:: Pfad für die Speicherung der *.bak setzen
set pfad_hd=c:\backup\
:: Pfad für eine Kopie der *.bak setzen
set pfad_sd=i:\
:: Alter in Tagen der *.bak die geloescht werden sollen
set alter_hd=3
set alter_sd=1
:: ############# Einstellungen Ende ################
:: Zeitformat mit fuehrender 0 bei 0-9 Uhr (z.B.: 08h)
set zeitmitnull=%date:~-4%-%date:~-7,2%-%date:~-10,2%---%time:~0,2%h
setlocal enabledelayedexpansion
set zeitmitnull=!zeitmitnull:^ =0!
setlocal disabledelayedexpansion
echo ---------------------------------------------------------
echo.
echo Sicherung der Datenbank "eazybusiness" der JTL-Wawi
echo Sicherung nach Pfad %pfad_hd% Dateiname: %zeitmitnull%.bak
echo.
osql.exe -D eazy -U sa -P sa04jT14 -Q "BACKUP DATABASE eazybusiness TO DISK = '%pfad_hd%%zeitmitnull%.bak'"
echo Datenbank wurde ausgelesen
ping /n 1 localhost >nul
echo ---------------------------------------------------------
echo Zeige Dateien aelter als %alter_hd% Tage von %pfad_hd%.
FORFILES /p %pfad_hd% /d -%alter_hd% /m *.bak /c "CMD /C echo @FILE"
ping /n 1 localhost >nul
echo Loesche Dateien aelter als %alter_hd% Tage von %pfad_hd%.
FORFILES /p %pfad_hd% /d -%alter_hd% /m *.bak /c "CMD /C del @FILE"
ping /n 1 localhost >nul
echo.
echo Zeige Dateien aelter als %alter_sd% Tage von Speicherkarte %pfad_sd% .
FORFILES /p %pfad_sd% /d -%alter_sd% /m *.bak /c "CMD /C echo @FILE"
ping /n 1 localhost >nul
echo Loesche Dateien aelter als %alter_sd% Tage von Speicherkarte %pfad_sd% .
FORFILES /p %pfad_sd% /d -%alter_sd% /m *.bak /c "CMD /C del @FILE"
ping /n 1 localhost >nul
echo.
echo ---------------------------------------------------------
echo.
echo Kopiere Datenbank von %pfad_hd% auf Speicherkarte %pfad_sd%.
xcopy "%pfad_hd%%zeitmitnull%.bak" "%pfad_sd%" /y
echo.
echo Datensicherung abgeschlossen
ping /n 2 localhost >nul
pause
 

poi

Sehr aktives Mitglied
25. Januar 2008
548
26
AW: Automatisches Backup

Hi, ich kann Comodo Backup empfehlen. Kostenlos und nicht so kommerziell wie Acronis jetzt geworden ist! Acronis kenne ich von der Sternstunde an und ärgere mich über die immer komplizierter und unsicherer werdenden Backups. Ich hatte mit Acronis schon sehr viele defekte Backups!

Ich lasse die WaWi auf WinXT in einer VirtualBox laufen. Wenn ich experimentiere kann ich einen Snapshot machen und bin schnell wieder auf Anfang zurück. Die Datenbanksicherungen habe ich zuvor mit dem "gefrickelten" Skript über cronjob gemacht, was sehr zuverlässig funktionierte. Das am Abend um 19:00 Uhr. Heute mit dem kostenlosen Tool SqlBackupAndFTP, da dieses Tool auch komprimieren kann. Alle Daten werden auf einer externen S.A.M.B.A Share gesichert.

Klappt gut... Gruß
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

Nochmal eine verbesserte Version (ohne Gewähr):
Zeitstempel verbessert
DB überprüfen hinzugefügt
Backup komprimieren hinzugefügt
Bunte Erfolgs-/Fehlermeldung hinzugefügt^^

Läuft hier 4x am Tag auf Win7 ohne Probleme.


Code:
:: Copyleft Batchskript für die Sicherung der JTL-Wawi-DB über den Taskplaner oder manuell.
:: Voraussetzung ist die Freeware 7z.exe für die Kompression der Sicherung.
:: Viel Spass damit^^
:: --------------------------------------------------------------------------
:: Ablauf: DB pruefen --> sichern --> komprimieren --> speichern HD & USB --> aelter als x-Tage löschen
:: --------------------------------------------------------------------------
:: ############# Einstellungen Anfang ##############
:: Pfade für die Speicherung der *.zip setzen
@echo off
set pfad_hd=c:\backup\
set pfad_sd=e:\
:: Pfade des DB-Check-Logs und des Komprimierungstools/Passwort
set pfad_chk_db=C:\backup\chk_db.txt
set pfad_7z="C:\Program Files\7-Zip\7z.exe"
set Zip_Password=############# dein gewünschtes Passwort hier #############
:: Lebensdauer der Sicherung in Tagen
set alter_hd=7
set alter_sd=3
::  ############# Einstellungen Ende ################
:: --------------------------------------------------------------------------
:: Zeitformat mit fuehrender 0 bei 0-9 Uhr, z.B.: 08h (MS Bug o. Feature?^^)
setlocal 
for /f "tokens=1-2 delims=:, " %%a in ("%time%") do set "tstamp=0%%a%%b"
set "zeitmitnull=%date:~-4%-%date:~-7,2%-%date:~-10,2%---%tstamp:~-4%"
:: ############# Start des DB-Skripts #############
echo   ################################################
echo   #####                                      #####
echo   ##### - Sicherung der JTL-WAWI-Datenbank - #####
echo   #####                                      #####
echo   ################################################
:: db ueberpruefen
echo --------------------------------------------------------------------------
echo.
echo ##### - Ueberpruefe DB...
osql.exe -D eazy -U sa -P sa04jT14 -Q "DBCC CHECKDB('eazybusiness')" -o %pfad_chk_db%>nul
find "0 Zuordnungsfehler und 0 Konsistenzfehler" %pfad_chk_db%>nul && goto db_ok
color 4f & echo Datenbank fehlerhaft - Siehe %pfad_chk_db%
pause
goto :EOF
:db_ok
echo ##### - DB in Ordnung
echo.
:: DB auslesen und in Datei schreiben
echo --------------------------------------------------------------------------
echo.
echo ##### - Sicherung der DB nach %pfad_hd%%zeitmitnull%.bak...
echo.
osql.exe -D eazy -U sa -P sa04jT14 -Q "BACKUP DATABASE eazybusiness TO DISK = '%pfad_hd%%zeitmitnull%.bak'"
echo.
echo ##### - erledigt
echo.
:: Sicherungsdatei komprimieren
echo --------------------------------------------------------------------------
echo.
echo ##### - komprimieren der DB-Sicherung und loeschen der org. Datei
%pfad_7z% a -tzip %pfad_hd%%zeitmitnull%.zip %pfad_hd%%zeitmitnull%.bak -p%Zip_Password% -mem=AES256 -mx=5
if not exist %pfad_hd%%zeitmitnull%.zip goto :Fehler_keine_komprimierung
del %pfad_hd%%zeitmitnull%.bak
echo.
echo ##### - erledigt
echo.
:: Sicherung auf externes Medium kopieren
echo --------------------------------------------------------------------------
echo.
echo ##### - Kopiere Sicherung von %pfad_hd% auf Speicherkarte %pfad_sd%.
xcopy "%pfad_hd%%zeitmitnull%.zip" "%pfad_sd%"  /y
if not exist %pfad_sd%%zeitmitnull%.zip goto :Fehler_zip_fehlt
echo.
echo ##### - erledigt
echo.
:: Sicherungsdateien aelter als x-Tage loeschen
echo --------------------------------------------------------------------------
echo.
echo ##### - Loesche Dateien aelter als %alter_hd% Tage von %pfad_hd%.
FORFILES /p %pfad_hd% /d -%alter_hd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - Loesche Dateien aelter als %alter_sd% Tage von Speicherkarte %pfad_sd% .
FORFILES /p %pfad_sd% /d -%alter_sd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - erledigt
echo.
:: grün = erfolgreich gesichert
echo --------------------------------------------------------------------------
echo.
COLOR 2F & echo ##### - Datensicherung abgeschlossen
echo.
pause
goto :EOF
:: rot = Fehler
echo --------------------------------------------------------------------------
:Fehler_keine_komprimierung
color 4f & echo ##### - Datensicherung fehlgeschlagen - Datei komprimieren fehlgeschlagen
pause
goto :EOF
:Fehler_zip_fehlt
color 4f & echo ##### - Datensicherung fehlgeschlagen - komprimierte Datei fehlt
pause
:EOF
 

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.084
339
AW: Automatisches Backup

Hi,

als Verbesserungsvorschlag: Arbeite bei osql mit -S SERVERNAME anstelle von -D ODBC-Verbindung - sonst kommt es auf 64bit Systemen schnell zu Problemen.

Gruß,
Sebastian
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

Herzlichen Dank für den Tip. Wir haben win 7 64bit und bisher Glück gehabt. Bei mehreren Backups, die wir bisher eingespielt haben, hat es noch keine Probleme gegeben.

Ich hab es im Script geändert, aber es funktioniert (wie bei uns auch in den OBDC-Einstellungen) nur mit der Rechner-IP und nicht mit dem Rechnername. Ausserdem muss bei uns auch die Instanz angegeben werden, da ansonsten keine Verbindung zum SQL-Server hergestellt werden kann.

Mit 192.168.178.xx\JTLWAWI funktioniert es aber einwandfrei...nochmals thx :)
lg
Tom
 

traumdusche24

Aktives Mitglied
1. Mai 2013
28
0
AW: Automatisches Backup

Das ist für mich schon die Profilösung, funktioniert auch mit Windows 8.1 64bit, dann allerdings auch mit -S SERVERNAME

Noch ein Vorschlag hätte ich als Verbesserungsvorschlag noch, wäre es möglich nur bei einem Fehler diesen anzeigen zu lassen? Ich meine wenn es in Ordnung war und grün wird, kann das Fenster geschlossen werden, bei Fehlern bleibt das Fenster auf oder so, geht das?
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

thx für die Blumen, aber vom Profi bin ich sowas von meilenweit entfernt. Ich bin da eher diebisch-geiziger Minimalist.^^
lg
Tom

Hier eine bereinigte Version:
Rechnername, Instanz und SQL-Passwort bei den Einstellungen
Bei Erfolg schließt das (grüne) Fenster nach ein paar Sekunden

Code:
@echo off
:: Copyleft Batchskript für die Sicherung der JTL-Wawi-DB über den Taskplaner.
:: Voraussetzung ist die Freeware 7z.exe für die Kompression der Sicherung.
:: Viel Spass damit^^
:: --------------------------------------------------------------------------
:: Ablauf: DB pruefen --> sichern --> komprimieren --> speichern HD & USB --> aelter als x-Tage löschen
:: --------------------------------------------------------------------------
:: ############# Einstellungen Anfang ##############
:: Rechnername oder IP - Instanz ist normalerweise "JTLWAWI" - Passwort SQL-Server (oft: sa04jT14)^^
set rechnername=deinRechnerName
set instanz=JTLWAWI
set sqlpass=sa04jT14
:: Pfade für die Speicherung der *.zip setzen
set pfad_hd=c:\backup\
set pfad_sd=e:\
:: Pfade des DB-Check-Logs und des Komprimierungstools/Passwort
set pfad_chk_db=C:\backup\chk_db.txt
set pfad_7z="C:\Program Files\7-Zip\7z.exe"
set Zip_Password=deingewuenschtesPasswort
:: Lebensdauer der Sicherung in Tagen
set alter_hd=7
set alter_sd=3
::  ############# Einstellungen Ende ################
:: --------------------------------------------------------------------------
:: Zeitformat mit fuehrender 0 bei 0-9 Uhr, z.B.: 08h (MS Bug o. Feature?^^)
setlocal 
for /f "tokens=1-2 delims=:, " %%a in ("%time%") do set "tstamp=0%%a%%b"
set "zeitmitnull=%date:~-4%-%date:~-7,2%-%date:~-10,2%---%tstamp:~-4%"
:: ############# Start des DB-Skripts #############
echo   ################################################
echo   #####                                      #####
echo   ##### - Sicherung der JTL-WAWI-Datenbank - #####
echo   #####                                      #####
echo   ################################################
:: db ueberpruefen
echo --------------------------------------------------------------------------
echo.
echo ##### - Ueberpruefe DB...
osql.exe -S %rechnername%\%instanz% -U sa -P %sqlpass% -Q "DBCC CHECKDB('eazybusiness')" -o %pfad_chk_db%>nul
find "0 Zuordnungsfehler und 0 Konsistenzfehler" %pfad_chk_db%>nul && goto db_ok
color 4f & echo Datenbank fehlerhaft - Siehe %pfad_chk_db%
pause
goto :EOF
:db_ok
echo ##### - DB in Ordnung
echo.
:: DB auslesen und in Datei schreiben
echo --------------------------------------------------------------------------
echo.
echo ##### - Sicherung der DB nach %pfad_hd%%zeitmitnull%.bak...
echo.
osql.exe -S %rechnername%\%instanz% -U sa -P %sqlpass% -Q "BACKUP DATABASE eazybusiness TO DISK = '%pfad_hd%%zeitmitnull%.bak'"
echo.
echo ##### - erledigt
echo.
:: Sicherungsdatei komprimieren
echo --------------------------------------------------------------------------
echo.
echo ##### - komprimieren der DB-Sicherung und loeschen der org. Datei
%pfad_7z% a -tzip %pfad_hd%%zeitmitnull%.zip %pfad_hd%%zeitmitnull%.bak -p%Zip_Password% -mem=AES256 -mx=5
if not exist %pfad_hd%%zeitmitnull%.zip goto :Fehler_keine_komprimierung
del %pfad_hd%%zeitmitnull%.bak
echo.
echo ##### - erledigt
echo.
:: Sicherung auf externes Medium kopieren
echo --------------------------------------------------------------------------
echo.
echo ##### - Kopiere Sicherung von %pfad_hd% auf Speicherkarte %pfad_sd%.
xcopy "%pfad_hd%%zeitmitnull%.zip" "%pfad_sd%"  /y
if not exist %pfad_sd%%zeitmitnull%.zip goto :Fehler_zip_fehlt
echo.
echo ##### - erledigt
echo.
:: Sicherungsdateien aelter als x-Tage loeschen
echo --------------------------------------------------------------------------
echo.
echo ##### - Loesche Dateien aelter als %alter_hd% Tage von %pfad_hd%.
FORFILES /p %pfad_hd% /d -%alter_hd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - Loesche Dateien aelter als %alter_sd% Tage von Speicherkarte %pfad_sd% .
FORFILES /p %pfad_sd% /d -%alter_sd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - erledigt
echo.
:: grün = erfolgreich gesichert
echo --------------------------------------------------------------------------
echo.
COLOR 2F & echo ##### - Datensicherung abgeschlossen
echo.
ping /n 5 localhost >nul
goto :EOF
:: rot = Fehler
echo --------------------------------------------------------------------------
:Fehler_keine_komprimierung
color 4f & echo ##### - Datensicherung fehlgeschlagen - Datei komprimieren fehlgeschlagen
pause
goto :EOF
:Fehler_zip_fehlt
color 4f & echo ##### - Datensicherung fehlgeschlagen - komprimierte Datei fehlt
pause
:EOF
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

-> Und hier die Frage: Weiß jemand wie man feststellen kann mit was genau die .bak erstellt wurde ? Damit hatte ich gerade vor ein paar Wochen auch immense Probleme.

Aus aktuellem Anlass wird nun die Wawi-Version aus der "./JTL-wawi.exe" ausgelesen und mit in den Dateinamen mit aufgenommen. Nur für dich^^
Beispiel: 2014-12-23-2022h-Ver.0.9.9.923.zip

lg
Tom

Code:
@echo off
:: Copyleft Batchskript für die Sicherung der JTL-Wawi-DB ueber den Taskplaner.
:: Voraussetzung ist die Freeware 7z.exe für die Kompression der Sicherung. Laeuft prima auf Win7.
:: Den gesammten Code als Textdatei mit der Endung *.bat speichern, Einstellungen vornehmen im Taskplaner
:: die Zeit fuer den regelmaessigen Start einrichten.
:: Viel Spass damit (auf eigene Gefahr), lg Tom aka _simone_ ^^
:: --------------------------------------------------------------------------
:: Ablauf: DB pruefen --> sichern --> komprimieren --> speichern HD & USB --> aelter als x-Tage loeschen
:: --------------------------------------------------------------------------
::  ###########################################################
::  ################## Einstellungen Anfang ###################
::  ###########################################################
:: Nach dem "=" die passenden Werte einsetzen. (Die eingetragenen Dateipfade koennen abweichen)
:: Rechnername oder IP - Instanz ist normalerweise "JTLWAWI" - Passwort SQL-Server (oft: sa04jT14)^^
set rechnername=DEIN RECHNERNAME / RECHNER-IP HIER EINSETZEN
set instanz=JTLWAWI
set sqlpass=sa04jT14
:: Pfade für die Speicherung der backup.zip setzen, z.B. auf die HD und zusaetzlich auf SD
set pfad_hd=c:\backup\
set pfad_sd=h:\
:: Pfade des DB-Check-Logs und des Komprimierungstools/Passwort
set pfad_chk_db=C:\backup\chk_db.txt
set pfad_7z="C:\Program Files\7-Zip\7z.exe"
set Zip_Password=DEIN PASSWORT HIER
:: Lebensdauer der Sicherung in Tagen
set alter_hd=5
set alter_sd=2
:: Pfad zur JTL-wawi.exe
set wawi_pfad=C:\Program Files (x86)\JTL-Software\JTL-wawi.exe
::  ###########################################################
::  ################## Einstellungen Ende #####################
::  ###########################################################
:: --------------------------------------------------------------------------
:: Zeitformat mit fuehrender 0 bei 0-9 Uhr einstellen, z.B.: 0800 (MS Bug o. Feature?^^)
setlocal 
for /f "tokens=1-2 delims=:, " %%a in ("%time%") do set "tstamp=0%%a%%b"
set "zeitmitnull=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%tstamp:~-4%"
:: Wawi Version aus JTL-wawi.exe auslesen
set "Datei=%wawi_pfad%"
set "GetV=%Temp%\GetV.vbs"
echo Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")>"%GetV%"
echo Set colFiles=objWMIService.ExecQuery ("SELECT * FROM CIM_Datafile WHERE Name='"^&Replace(WScript.Arguments(0),"\","\\")^&"'")>>"%GetV%"
echo For Each objFile in colFiles: WScript.Echo objFile.version: Next>>"%GetV%"
set Version=
for /f %%i in ('cscript //nologo "%GetV%" "%Datei%"') do set "Version=%%i"
del "%GetV%"
set bak_datei=%pfad_hd%%zeitmitnull%h-Ver.%Version%
:: ############# Start des DB-Skripts #############
echo   ################################################
echo   #####                                      #####
echo   ##### - Sicherung der JTL-WAWI-Datenbank - #####
echo   #####                                      #####
echo   ################################################
:: db ueberpruefen
echo --------------------------------------------------------------------------
echo.
echo ##### - Ueberpruefe DB...
osql.exe -S %rechnername%\%instanz% -U sa -P %sqlpass% -Q "DBCC CHECKDB('eazybusiness')" -o %pfad_chk_db%>nul
find "0 Zuordnungsfehler und 0 Konsistenzfehler" %pfad_chk_db%>nul && goto db_ok
color 4f & echo Datenbank fehlerhaft - Siehe %pfad_chk_db%
pause
goto :EOF
:db_ok
echo ##### - DB in Ordnung
echo.
:: DB auslesen und in Datei schreiben
echo --------------------------------------------------------------------------
echo.
echo ##### - Sicherung der DB nach %bak_datei%.bak...
echo.
osql.exe -S %rechnername%\%instanz% -U sa -P %sqlpass% -Q "BACKUP DATABASE eazybusiness TO DISK = '%bak_datei%.bak'"
echo.
echo ##### - erledigt
echo.
:: Sicherungsdatei komprimieren
echo --------------------------------------------------------------------------
echo.
echo ##### - komprimieren der DB-Sicherung und loeschen der org. Datei
%pfad_7z% a -tzip %bak_datei%.zip %bak_datei%.bak -p%Zip_Password% -mem=AES256 -mx=5
if not exist %bak_datei%.zip goto :Fehler_keine_komprimierung
del %bak_datei%.bak
echo.
echo ##### - erledigt
echo.
:: Sicherung auf externes Medium kopieren
echo --------------------------------------------------------------------------
echo.
echo ##### - Kopiere Sicherung von %pfad_hd% auf Speicherkarte %pfad_sd%.
xcopy "%bak_datei%.zip" "%pfad_sd%"  /y
if not exist %bak_datei%.zip goto :Fehler_zip_fehlt
echo.
echo ##### - erledigt
echo.
:: Sicherungsdateien aelter als x-Tage loeschen
echo --------------------------------------------------------------------------
echo.
echo ##### - Loesche Dateien aelter als %alter_hd% Tage von %pfad_hd%.
FORFILES /p %pfad_hd% /d -%alter_hd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - Loesche Dateien aelter als %alter_sd% Tage von Speicherkarte %pfad_sd% .
FORFILES /p %pfad_sd% /d -%alter_sd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - erledigt
echo.
:: grün = erfolgreich gesichert
echo --------------------------------------------------------------------------
echo.
COLOR 2F & echo ##### - Datensicherung abgeschlossen
echo.
@ping -n 5 localhost> nul
::pause
goto :EOF
:: rot = Fehler
echo --------------------------------------------------------------------------
:Fehler_keine_komprimierung
color 4f & echo ##### - Datensicherung fehlgeschlagen - Datei komprimieren fehlgeschlagen
pause
goto :EOF
:Fehler_zip_fehlt
color 4f & echo ##### - Datensicherung fehlgeschlagen - komprimierte Datei fehlt
pause
:EOF
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

Ich hab lieber die Produktversion von SQL, also in diesem Format: "2014-12-23-2329h-Wawi0.9.9.923-SQL10.50.2500.0.zip"
Funktioniert (zumindest bei mir)^^

Code:
@echo off
:: Copyleft Batchskript für die Sicherung der JTL-Wawi-DB ueber den Taskplaner.
:: Voraussetzung ist die Freeware 7z.exe für die Kompression der Sicherung. Laeuft prima auf Win7.
:: Den gesammten Code als Textdatei mit der Endung *.bat speichern, Einstellungen vornehmen im Taskplaner
:: die Zeit fuer den regelmaessigen Start einrichten.
:: Viel Spass damit (auf eigene Gefahr), lg Tom aka _simone_ ^^
:: --------------------------------------------------------------------------
:: Ablauf: DB pruefen --> sichern --> komprimieren --> speichern HD & USB --> aelter als x-Tage loeschen
:: --------------------------------------------------------------------------
::  ###########################################################
::  ################## Einstellungen Anfang ###################
::  ###########################################################
:: Nach dem "=" die passenden Werte einsetzen. (Die eingetragenen Dateipfade koennen abweichen)
:: Rechnername oder IP - Instanz ist normalerweise "JTLWAWI" - Passwort SQL-Server (oft: sa04jT14)^^
set rechnername=DEIN RECHNERNAME / RECHNER-IP HIER EINSETZEN
set instanz=JTLWAWI
set sqlpass=sa04jT14
:: Pfade für die Speicherung der backup.zip setzen, z.B. auf die HD und zusaetzlich auf SD
set pfad_hd=c:\backup\
set pfad_sd=h:\
:: Pfade des DB-Check-Logs und des Komprimierungstools/Passwort
set pfad_chk_db=C:\backup\chk_db.txt
set pfad_7z="C:\Program Files\7-Zip\7z.exe"
set Zip_Password=DEIN PASSWORT HIER
:: Lebensdauer der Sicherung in Tagen
set alter_hd=5
set alter_sd=2
:: Pfad zu sqlservr.exe und JTL-wawi.exe
set sql_pfad=C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.JTLWAWI\MSSQL\Binn\sqlservr.exe
set wawi_pfad=C:\Program Files (x86)\JTL-Software\JTL-wawi.exe
::  ###########################################################
::  ################## Einstellungen Ende #####################
::  ###########################################################
:: --------------------------------------------------------------------------
:: Zeitformat mit fuehrender 0 bei 0-9 Uhr einstellen, z.B.: 0800 (MS Bug o. Feature?^^)
setlocal 
for /f "tokens=1-2 delims=:, " %%a in ("%time%") do set "tstamp=0%%a%%b"
set "zeitmitnull=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%tstamp:~-4%"
:: SQL- und Wawi-Version auslesen
set "Datei=%sql_pfad%" 
( 
  echo Set objFSO = CreateObject^("Scripting.FileSystemObject"^) 
  echo Set objShell = CreateObject^("Shell.Application"^) 
  echo Set objFolder = objShell.NameSpace^(objFSO.GetParentFolderName^(WScript.Arguments^(0^)^)^) 
  echo WScript.Echo objFolder.ParseName^(objFSO.GetFileName^(WScript.Arguments^(0^)^)^).ExtendedProperty^("productversion"^) 
)>"%temp%\getPV.vbs" 
for /f %%i in ('cscript //nologo "%temp%\getPV.vbs" "%Datei%"') do set "sqlVersion=%%i" 
del "%temp%\getPV.vbs" 
set "Datei=%wawi_pfad%" 
( 
  echo Set objFSO = CreateObject^("Scripting.FileSystemObject"^) 
  echo Set objShell = CreateObject^("Shell.Application"^) 
  echo Set objFolder = objShell.NameSpace^(objFSO.GetParentFolderName^(WScript.Arguments^(0^)^)^) 
  echo WScript.Echo objFolder.ParseName^(objFSO.GetFileName^(WScript.Arguments^(0^)^)^).ExtendedProperty^("productversion"^) 
)>"%temp%\getPV.vbs" 
for /f %%i in ('cscript //nologo "%temp%\getPV.vbs" "%Datei%"') do set "Wawi-Version=%%i" 
del "%temp%\getPV.vbs" 
set bak_datei=%pfad_hd%%zeitmitnull%h-Wawi%Wawi-Version%-SQL%sqlVersion%
:: ############# Start des DB-Skripts #############
echo   ################################################
echo   #####                                      #####
echo   ##### - Sicherung der JTL-WAWI-Datenbank - #####
echo   #####                                      #####
echo   ################################################
:: db ueberpruefen
echo --------------------------------------------------------------------------
echo.
echo ##### - Ueberpruefe DB...
osql.exe -S %rechnername%\%instanz% -U sa -P %sqlpass% -Q "DBCC CHECKDB('eazybusiness')" -o %pfad_chk_db%>nul
find "0 Zuordnungsfehler und 0 Konsistenzfehler" %pfad_chk_db%>nul && goto db_ok
color 4f & echo Datenbank fehlerhaft - Siehe %pfad_chk_db%
pause
goto :EOF
:db_ok
echo ##### - DB in Ordnung
echo.
:: DB auslesen und in Datei schreiben
echo --------------------------------------------------------------------------
echo.
echo ##### - Sicherung der DB nach %bak_datei%.bak...
echo.
osql.exe -S %rechnername%\%instanz% -U sa -P %sqlpass% -Q "BACKUP DATABASE eazybusiness TO DISK = '%bak_datei%.bak'"
echo.
echo ##### - erledigt
echo.
:: Sicherungsdatei komprimieren
echo --------------------------------------------------------------------------
echo.
echo ##### - komprimieren der DB-Sicherung und loeschen der org. Datei
%pfad_7z% a -tzip %bak_datei%.zip %bak_datei%.bak -p%Zip_Password% -mem=AES256 -mx=5
if not exist %bak_datei%.zip goto :Fehler_keine_komprimierung
del %bak_datei%.bak
echo.
echo ##### - erledigt
echo.
:: Sicherung auf externes Medium kopieren
echo --------------------------------------------------------------------------
echo.
echo ##### - Kopiere Sicherung von %pfad_hd% auf Speicherkarte %pfad_sd%.
xcopy "%bak_datei%.zip" "%pfad_sd%"  /y
if not exist %bak_datei%.zip goto :Fehler_zip_fehlt
echo.
echo ##### - erledigt
echo.
:: Sicherungsdateien aelter als x-Tage loeschen
echo --------------------------------------------------------------------------
echo.
echo ##### - Loesche Dateien aelter als %alter_hd% Tage von %pfad_hd%.
FORFILES /p %pfad_hd% /d -%alter_hd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - Loesche Dateien aelter als %alter_sd% Tage von Speicherkarte %pfad_sd% .
FORFILES /p %pfad_sd% /d -%alter_sd% /m *.zip /c "CMD /C del @FILE"
echo.
echo ##### - erledigt
echo.
:: grün = erfolgreich gesichert
echo --------------------------------------------------------------------------
echo.
COLOR 2F & echo ##### - Datensicherung abgeschlossen
echo.
@ping -n 5 localhost> nul
::pause
goto :EOF
:: rot = Fehler
echo --------------------------------------------------------------------------
:Fehler_keine_komprimierung
color 4f & echo ##### - Datensicherung fehlgeschlagen - Datei komprimieren fehlgeschlagen
pause
goto :EOF
:Fehler_zip_fehlt
color 4f & echo ##### - Datensicherung fehlgeschlagen - komprimierte Datei fehlt
pause
:EOF
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

Kleine Bereinigung (doppelten Code entfernt)
 

Anhänge

  • backup_wawi_ohne_einstellungen.zip
    2 KB · Aufrufe: 60

deepblue

Sehr aktives Mitglied
2. Januar 2009
2.301
6
Hannover / Hamburg
AW: Automatisches Backup

Hallo,

wenn ich die JTL-Wawi schließe, welcher Prozess muss dann unbedingt beendet sein, damit ich ein Backup mit SQLBackupAndFTP erstellen kann?

Wir nutzen die Version von: Download SQLBackupAndFTP
Aktuell die Version: 10.0.22

Habe noch folgende Fragen:

1. Ist diese die Free-Version von Datenvolumen eingeschränkt?
2. Wir würden gerne auf die Standard-Version wechseln um FTP zu nutzen. Unsere DB ist mittlerweile ca. 3,5 GB groß. Wie lange benötigt man für ein FTP-Backup?
Oder sollte man lieber bei der DB größe auf eine externe Festplatte sichern?
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
461
Emsland
Firma
Notun Delend
AW: Automatisches Backup

Eine Frage hätte ich noch zum Backup, wird das script gestartet wird der worker angehalten und danach wieder gestartet?

Eine gangbare Methode wäre mit "taskkill", aber ich bin mir nicht sicher, ob das ok ist oder evt. Daten nicht mehr oder nicht vollständig geschrieben werden.

Eine andere Methode wäre mittels "pssuspend" den Prozess anhalten und mit -r weiter ausführen. Hab ich noch nie benutzt und müsste auch erst von den MS-Sysinternals installiert werden.

Jemand eine Idee dazu?
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.174
657
AW: Automatisches Backup

Danke Tom für das Script, gefällt mir jetzt schon sehr gut, ohne es getestet zu haben.

Da beim Backup alles geschlossen sein sollte, sprich Wawis + Worker, warte ich unbedingt auf die JTL Workflows.
Ich erhoffe mir dann, die Worker zeitlich besser steuern zu können, um mir dann ein Zeitfenster für Backups zu schaffen.

Ich könnte dann das Batch von dir zeitgesteuert in diesem Fenster antriggern und zur Not vorher auch den kompletten JTL-Server Dienst stoppen, um sicherzustellen dass wirklich keiner am arbeiten ist!

Hierbei muss ich aber das Verhalten von JTL nochmals prüfen, weil aktuell findet ja ein erneuter Verbindungsaufbau statt und die Daten könnten verloren gehen.
Wenn dann gerade jemand lange mühsam einen Auftrag erstellt hat, wird der sich ärgern.


@JTL
Das wäre ein Punkt, den ich mir schon lange wünsche! Man sollte nicht selbst herausfinden, dass die Verbindung verloren gegangen ist zum Server,
sprich man warten muss bis sich Client neu verbunden hat. Ich fände es klasse, wenn eine Art Popup Meldung sofort erscheint mit einem Button "neu verbinden".
So könnte man Datenverluste vermeiden, die im Hintergrund offenen Fenster (Aufträge etc) können geöffnet bleiben.
Im Hintergrund in JTL-Wawi müsste natürlich stets der Server angepingt werden, ob dieser wirklich erreichbar ist.

Vielleicht kann sich JTL dazu äußern, ob bei Server-Verbindungsabbruch wirklich Datenverluste zu befürchten sind, meines Wissens nach JA.