Backup per Batch - div. Anfängerfragen
Per RoboCopy soll jede Nacht ein vollständiges Backup unseres Servers Win2003 SBS) auf eine lokal angeschlossene USB-Platte gemacht werden.
Die Platte wird wöchentlich gewechselt und bietet Platz für insgesamt fünf Sicherungen.
Hallo Administratoren!
Als "blutiger" Anfänger in Administration und Programmierung habe ich oben beschriebene Aufgabenstellung.
Nach ausführlicher Lektüre hier und in den weiten Untiefen des Webs habe ich mit der Erstellung eines Batch-Scripts
begonnen, welches zum Teil auch schon funktioniert. Aber ich brauche eure Hilfe, um das Projekt fertig zu bekommen.
Zunächst der "Rahmen":
Jede Nacht soll auf unserem Server (Windows SBS2003) eine automatische Datensicherung per RoboCopy auf einer
lokal angeschlossenen USB-Festplatte erfolgen. Es ist geplant, dass die Platte jeweils montags gewechselt wird.
Ich plane, über den Scheduler jeweils Di, Mi, Do, Fr, Sa um 02:00Uhr die Sicherung zu starten. Dann sind alle Daten
des Produktivtages soweit geschlossen, dass auch die "Nachtarbeit" mit gesichert werden kann.
Diese fünf Voll-Sicherungen (also nicht inkremental) passen gut auf die externen Platten, eine sechste würde nicht draufpassen.
Also starte ich damit, dass ich die vorhandenen Verzeichnisse der Platte abfrage und das jeweils älteste lösche.
Im nächsten Schritt lege ich einen neuen Ordner an, der das aktuelle Sicherungsdatum in der Form JJJJMMTT als Namen trägt.
Jetzt soll RoboCopy die gewünschten Files in den neu angelegten Ordner schreiben. Und da sitzt der Haken:
Wie kann ich den neu erzeugten Ordner automatisch als Zielpfad für RoboCopy übergeben?
Speziell geht es mir also darum, dass ich das Zielverzeichnis %bckdir% definieren muss, aber nicht weiss, wie.
Kann mir jemand einen eleganten Tip beisteuern?
Vielen Dank!
Felix
Die Platte wird wöchentlich gewechselt und bietet Platz für insgesamt fünf Sicherungen.
Hallo Administratoren!
Als "blutiger" Anfänger in Administration und Programmierung habe ich oben beschriebene Aufgabenstellung.
Nach ausführlicher Lektüre hier und in den weiten Untiefen des Webs habe ich mit der Erstellung eines Batch-Scripts
begonnen, welches zum Teil auch schon funktioniert. Aber ich brauche eure Hilfe, um das Projekt fertig zu bekommen.
Zunächst der "Rahmen":
Jede Nacht soll auf unserem Server (Windows SBS2003) eine automatische Datensicherung per RoboCopy auf einer
lokal angeschlossenen USB-Festplatte erfolgen. Es ist geplant, dass die Platte jeweils montags gewechselt wird.
Ich plane, über den Scheduler jeweils Di, Mi, Do, Fr, Sa um 02:00Uhr die Sicherung zu starten. Dann sind alle Daten
des Produktivtages soweit geschlossen, dass auch die "Nachtarbeit" mit gesichert werden kann.
Diese fünf Voll-Sicherungen (also nicht inkremental) passen gut auf die externen Platten, eine sechste würde nicht draufpassen.
Also starte ich damit, dass ich die vorhandenen Verzeichnisse der Platte abfrage und das jeweils älteste lösche.
Im nächsten Schritt lege ich einen neuen Ordner an, der das aktuelle Sicherungsdatum in der Form JJJJMMTT als Namen trägt.
Jetzt soll RoboCopy die gewünschten Files in den neu angelegten Ordner schreiben. Und da sitzt der Haken:
Wie kann ich den neu erzeugten Ordner automatisch als Zielpfad für RoboCopy übergeben?
:: @echo off
:: --------- Setzen der Pfade ---------
set scriptdir=C:\Backupscripts
set logdir=C:\Backupscripts\Logfile
set bckdrv=X:
:: --------- Ueberpruefung der vorhandenen Ordner im %bckdrv% , aelteste werden geloescht, >maximum=4< bleiben erhalten ---------
:MaxBackupUeberpruefen
set "maximum=4"
FOR /F "skip=%maximum% delims=" %%i in ('dir /O-D /B /AD %bckdrv%\') do rd /S /Q %bckdrv%\"%%i"
GOTO :DatumsordnerErzeugen
:: --------- Anlegen des neuen Sicherungsordners im %bckdrv% im Format YYYYMMDD ---------
:DatumsordnerErzeugen
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
md %bckdrv%\%jahr%%monat%%tag%
GOTO :ROBOCOPY
:: --------- Ausfuehren der Sicherung per robocopy im neu erzeugten Ordner ---------
:ROBOCOPY
set bckdir=
robocopy "d:\test1" %bckdrv%%bckdir%\test1 /S /E /COPY:DATS /R:4 /W:10 /LOG+:%logdir%\backuplog.log /NP /TEE
GOTO :EOF
:EOF
:: @echo on
Speziell geht es mir also darum, dass ich das Zielverzeichnis %bckdir% definieren muss, aber nicht weiss, wie.
Kann mir jemand einen eleganten Tip beisteuern?
Vielen Dank!
Felix
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116087
Url: https://administrator.de/contentid/116087
Ausgedruckt am: 24.11.2024 um 15:11 Uhr
5 Kommentare
Neuester Kommentar
Servus,
gib dem Script doch eine logische "Struktur"
Set zu Set usw.
Und du hattest
Also Zeile 17 - 22 ganz an den Anfang und aus der ehemaligen Zeile 22 ein Set
...so mal Pi mal daumen drüber gesehen...
edit - so mal alle goto - die eh angesprungen würden, da direkt darunter - rausgekickt... /edit
edit² jau und nun ist auch in Zeile 10 ein \ - wo es hingehört /edit²
Gruß
gib dem Script doch eine logische "Struktur"
Set zu Set usw.
Und du hattest
set bckdir= Nix nada da stehen....
Also Zeile 17 - 22 ganz an den Anfang und aus der ehemaligen Zeile 22 ein Set
:: @echo off
:: --------- Setzen der Variablen ---------
set scriptdir=C:\Backupscripts
set logdir=C:\Backupscripts\Logfile
set bckdrv=X:
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set bckdir=%bckdrv%\%jahr%%monat%%tag%
:: --------- Ueberpruefung der vorhandenen Ordner im %bckdrv% , aelteste werden geloescht, >maximum=4< bleiben erhalten ---------
:MaxBackupUeberpruefen
set "maximum=4"
FOR /F "skip=%maximum% delims=" %%i in ('dir /O-D /B /AD %bckdrv%\') do rd /S /Q %bckdrv%\"%%i"
:: --------- Anlegen des neuen Sicherungsordners im %bckdrv% im Format YYYYMMDD ---------
md %bckdir%
:: --------- Ausfuehren der Sicherung per robocopy im neu erzeugten Ordner ---------
:ROBOCOPY
robocopy "d:\test1" %bckdrv%%bckdir%\test1 /S /E /COPY:DATS /R:4 /W:10 /LOG+:%logdir%\backuplog.log /NP /TEE
:EOF
:: @echo on
...so mal Pi mal daumen drüber gesehen...
edit - so mal alle goto - die eh angesprungen würden, da direkt darunter - rausgekickt... /edit
edit² jau und nun ist auch in Zeile 10 ein \ - wo es hingehört /edit²
Gruß
Moin Modellix,
willkommen im Forum.
In Zeile 17-21 Deines Schnipsels wird schon ein neuer Sicherungsordner unterhalb %bckdrv% zusammengebastelt.
Also wäre doch der Wert des neuen Sicherungsordners laut Skizze %jahr%%monat%%tag%, und dementsprechen solltest Du VOR dem "MD ..." (Zeile 22) einfügen:
Grüße
Biber
willkommen im Forum.
In Zeile 17-21 Deines Schnipsels wird schon ein neuer Sicherungsordner unterhalb %bckdrv% zusammengebastelt.
Also wäre doch der Wert des neuen Sicherungsordners laut Skizze %jahr%%monat%%tag%, und dementsprechen solltest Du VOR dem "MD ..." (Zeile 22) einfügen:
Set "bckdir=%jahr%%monat%%tag%"
Grüße
Biber
Zitat von @Modellix:
Hallo Admins,
jetzt ist einige Zeit vergangen, und mein Backup läuft immer
noch nicht automatisch und
vollständig. Statt dessen sichere ich die wichtigsten Sachen von
Hand, die unwichtigen eigentlich
gar nicht...
Auch wenn das Script mit eurer Hilfe eigentlich schon fertig ist,
traue ich mich noch nicht so recht,
es auf meinen Server loszulassen.
Kann bitte nochmal jemand drüber schauen, ob das so in Ordnung
ist?
Hallo Admins,
jetzt ist einige Zeit vergangen, und mein Backup läuft immer
noch nicht automatisch und
vollständig. Statt dessen sichere ich die wichtigsten Sachen von
Hand, die unwichtigen eigentlich
gar nicht...
Auch wenn das Script mit eurer Hilfe eigentlich schon fertig ist,
traue ich mich noch nicht so recht,
es auf meinen Server loszulassen.
Kann bitte nochmal jemand drüber schauen, ob das so in Ordnung
ist?
Servus,
das mit dem drüberschauen machen wir bitte anders
Überall wo ich in unfertigen Scripten als erste Zeile ein Echo finde - ist das debuggen nicht drin.
Die machst du bitte erstmal (in einer Kopie?) raus - obwohl das Original ist ja noch Hier
Überall - wo ein Befehl drin steht - wie rd oder robocopy - machst du ein echo davor.
Durch beide "zutaten" sowohl kein Echo off, als auch echo vor dem Befehl - solltest du sehen, welche Befehlszeilenvom Script erzeugt werden.
Hinter jedem echo noch eine Pause und die Zeile in einer separaten DOsbox abfeuern - ist dann schlussendlich dein Stepover über das Script.
Das kannst du alleine und bringt dir auch mehr als einem von uns - denn wir können das - du wilst es doch auchkönnen
bzw. ich kanns nicht - weil mein Apfel (der mit einem M im Namen - kann das nicht - besser ich will nicht, dass er das kann - ist ja keine Win Birne)
Gruß