Tägliche Vollsicherung per Batch Xcopy
Hallo Liebe Profis,
Ich habe das Problem mit meinem Sicherungsscript's !
Ich wollte per Xcopy für meinem DATEV Ordner einen sicherung machen und zwar so , dass es Täglich die Woche (7 Tage) den Ordner DATEV in eine Freigabe kopiert und zwar ohne jegliche Eingriffe.
Dies klappt soweit , allerdings möchte mein Vorgesetzter so, dass es jeden Tag Mo-So so aussehen soll:
Mo : soll der Ordner mit '1' gekennzeichnet werden oder mit 'Mo'
Di : soll mit '2' oder 'Di'
und dass ganze soll von MO-SO gekennzeichnet werden .
Wenn es wieder Montag ist soll es nur die änderungen überschrieben werden qwasie (Inkrementell) und dies für Mo-SO.
Bitte um euer Hilfe.
Meine Script sieht folgendermaßen aus :
net stop MSSQL$DATEV_DBENGINE /y
REM SICHERUNG
net use Q: \\dc1\SRV0004 /persistent:no
xcopy "C:\DATEV" Q:\Datev /c /d /e /h /i /k /q /r /s /x /y
net use Q: /delete
net start MSSQL$DATEV_DBENGINE
net start SQLAgent$DATEV_DBENGINE
Ich habe das Problem mit meinem Sicherungsscript's !
Ich wollte per Xcopy für meinem DATEV Ordner einen sicherung machen und zwar so , dass es Täglich die Woche (7 Tage) den Ordner DATEV in eine Freigabe kopiert und zwar ohne jegliche Eingriffe.
Dies klappt soweit , allerdings möchte mein Vorgesetzter so, dass es jeden Tag Mo-So so aussehen soll:
Mo : soll der Ordner mit '1' gekennzeichnet werden oder mit 'Mo'
Di : soll mit '2' oder 'Di'
und dass ganze soll von MO-SO gekennzeichnet werden .
Wenn es wieder Montag ist soll es nur die änderungen überschrieben werden qwasie (Inkrementell) und dies für Mo-SO.
Bitte um euer Hilfe.
Meine Script sieht folgendermaßen aus :
net stop MSSQL$DATEV_DBENGINE /y
REM SICHERUNG
net use Q: \\dc1\SRV0004 /persistent:no
xcopy "C:\DATEV" Q:\Datev /c /d /e /h /i /k /q /r /s /x /y
net use Q: /delete
net start MSSQL$DATEV_DBENGINE
net start SQLAgent$DATEV_DBENGINE
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 233468
Url: https://administrator.de/contentid/233468
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
15 Kommentare
Neuester Kommentar
Hi Toksoy,
die MIR Option spiegelt (mirror) ein Verzeichnis, d.h. löschst du im Source Folder eine Datei, dann wird sie auch im Destination Folder gelöscht.
dachte Robocopy hätte eine "Keep x Backups" Funktion - grad nicht gefunden.
aber mit einer einfachen Batch Variable, in der du den jeweiligen Wochentag abspeicherst und diese an den Dest Pfad hängst, kannst du dir das mit Robocopy basteln.
da du Systemadministrator angegeben hast, ließ dir die robocopy /? Hilfe durch und bastel dir ein Skript.
wenn's Probleme gibt dann frag hier und bitte code immer in < code> < / code>
wenn dir das mit den Wochentagen und IF zu kompliziert ist, dann mach halt 7 Tasks und für jeden eine Batchdatei. ist halt aufwendiger wenn du etwas ändern willst.
sg Dirm
die MIR Option spiegelt (mirror) ein Verzeichnis, d.h. löschst du im Source Folder eine Datei, dann wird sie auch im Destination Folder gelöscht.
dachte Robocopy hätte eine "Keep x Backups" Funktion - grad nicht gefunden.
aber mit einer einfachen Batch Variable, in der du den jeweiligen Wochentag abspeicherst und diese an den Dest Pfad hängst, kannst du dir das mit Robocopy basteln.
da du Systemadministrator angegeben hast, ließ dir die robocopy /? Hilfe durch und bastel dir ein Skript.
wenn's Probleme gibt dann frag hier und bitte code immer in < code> < / code>
wenn dir das mit den Wochentagen und IF zu kompliziert ist, dann mach halt 7 Tasks und für jeden eine Batchdatei. ist halt aufwendiger wenn du etwas ändern willst.
sg Dirm
Hallo toksoy!
Unabhängig von der Frage, ob nicht tatsächlich "robocopy" das sinnvollere Werkzeug wäre, ein Ansatz, um den Wochentag als laufende Nummer von 1 (Mo) bis 7 (So) in der Variablen %WtNr% zu erhalten:
Es wird hier einfach durch den Batch ein kleines VBScript erzeugt, das den entsprechenden Wert an den Batch zurückliefert.
Grüße
bastla
Unabhängig von der Frage, ob nicht tatsächlich "robocopy" das sinnvollere Werkzeug wäre, ein Ansatz, um den Wochentag als laufende Nummer von 1 (Mo) bis 7 (So) in der Variablen %WtNr% zu erhalten:
>"%temp%\GetWdN.vbs" echo WScript.Echo Weekday(WScript.Arguments(0),2)
for /f %%i in ('cscript //nologo "%temp%\GetWdN.vbs" %date%') do set /a WtNr=%%i
Grüße
bastla
Hi Endoro,
deine Batch gibt immer meinen Tag später an ich habe das mal eben schnell angepasst:
Gruß Pago
deine Batch gibt immer meinen Tag später an ich habe das mal eben schnell angepasst:
@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "DOWs=MODIMIDOFRSASO"
FOR /f %%a IN ('WMIC PATH Win32_LocalTime GET DayOfWeek^|FINDSTR [0-6]') DO SET /a DayOfWeek=%%a*2-2
CALL SET "DOW=%%DOWs:~%DayOfWeek%,2%%"
ECHO(%DOW%
Pause
Gruß Pago
Hey @Pago159
Gruss Endoro.
Zitat von @Pago159:
Hi Endoro,
deine Batch gibt immer meinen Tag später an ich habe das mal eben schnell angepasst:
da könnte jetzt Hi Endoro,
deine Batch gibt immer meinen Tag später an ich habe das mal eben schnell angepasst:
-2
rauskommen, ich würde lieber die Wochentage umsortieren:@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "DOWs=SOMODIMIDOFRSA"
FOR /f %%a IN ('WMIC PATH Win32_LocalTime GET DayOfWeek^|FINDSTR [0-6]') DO SET /a DayOfWeek=%%a*2
CALL SET "DOW=%%DOWs:~%DayOfWeek%,2%%"
ECHO(%DOW%
Hiermit erstellst du einen Ordner Datev und darunter dann die Ordner Mo - Di - Mi - Do - Fr - Sa - So
Die Xcopy Parameter habe ich mir jetzt nicht angeschaut, denke aber mal, dass du dich damit beschäftigt hast und lasse sie deshalb so stehen.
Die Xcopy Parameter habe ich mir jetzt nicht angeschaut, denke aber mal, dass du dich damit beschäftigt hast und lasse sie deshalb so stehen.
@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "DOWs=SOMODIMIDOFRSA"
FOR /f %%a IN ('WMIC PATH Win32_LocalTime GET DayOfWeek^|FINDSTR [0-6]') DO SET /a DayOfWeek=%%a*2
CALL SET "DOW=%%DOWs:~%DayOfWeek%,2%%"
net stop MSSQL$DATEV_DBENGINE /y
REM SICHERUNG
net use Q: \\dc1\SRV0004 /persistent:no
If not exist "Q:\DATEV\%DOW%_Sicherung" mkdir "Q\DATEV\%DOW%_Sicherung"
xcopy "C:\DATEV" Q:\DATEV\%DOW%_Sicherung\ /c /d /e /h /i /k /q /r /s /x /y
net use Q: /delete
net start MSSQL$DATEV_DBENGINE
net start SQLAgent$DATEV_DBENGINE
Hey, wenn du die Nummer des Wochentages als Ordnernamen nimmst, kannst du die Rechnungen mit "MODI..." weglassen:
Gruss, Endoro.
net stop MSSQL$DATEV_DBENGINE /y
REM SICHERUNG
net use Q: \\dc1\Datev /persistent:no
FOR /f %%a IN ('WMIC PATH Win32_LocalTime GET DayOfWeek^|FINDSTR [0-6]') DO SET /a DayOfWeek=%%a
xcopy "C:\Datev\*" "Q:\Datev\%DayofWeek%" /c /d /e /h /i /k /q /r /s /x /y
net use Q: /delete /yes
net start MSSQL$DATEV_DBENGINE
net start SQLAgent$DATEV_DBENGINE