Batch Backup batch kopiert nur die hälfte und gibt "FEHLER 2 (0x00000002)..." aus

Registriert
Nov. 2014
Beiträge
7
Servus an alle!

Um vorneweg einige Sachen zu klären, das folgende Script ist nicht von mir, ich kenne mich mit scripten kaum aus. Der der dieses Script gemacht hat ist nicht mehr in der Firma tätig und der Chef wälzt es auf mich ab das die Geschichte läuft.

Dreh schon am Rad weil ich selbst mit Google und sonstigen "Hilfe Foren" nicht weiter komm. Darum bin ich jetzt hier, auch wenn ich zu diesem fall nichts passendes gefunden hab weiß ich das hier Leute rumschwirren die sich damit auskennen und auch sehr hilfsbereit sind (das mit dem hilfsbereit soll keine Schleimerei sein. Das ist ein Fakt weil mir früher hier des Öfteren geholfen wurde, selbst bei total banalen Sachen).

Das Backup das wir fahren wird täglich durchgeführt. Die zu sichernden Daten sind mit dem entsprechenden datum+verzeichnis/Dateiname im Format 2014-11-01Name versehen und werden von den Datenbanken aus denen sie entspringen generiert.

Wie im Titel schon zum Teil erwähnt funktioniert die backup Batch nicht richtig. Letzte Woche lief sie noch einwandfrei und seit Beginn dieser Woche kopiert es nur noch die Hälfte von dem was es eigentlich soll.

Das Script sieht folgender maßen aus


@echo off

set WERT1=1
set WERT2=%date:~-10,2%
set /a WERT1 = %WERT2%-%WERT1%

@echo off



robocopy C:\Backup\Backup\DatenSrv01\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv01\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
robocopy C:\Backup\Backup\DatenSrv01\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem\ F:\Backup\DatenSrv01\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem /Mir



robocopy C:\Backup\Backup\DatenSrv02\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv02\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
robocopy C:\Backup\Backup\DatenSrv02\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem\ F:\Backup\DatenSrv02\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem /Mir



robocopy C:\Backup\Backup\DatenSrv03\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Database\ F:\Backup\DatenSrv03\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Database /Mir
robocopy C:\Backup\Backup\DatenSrv03\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Filesystem\ F:\Backup\DatenSrv03\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Filesystem /Mir



robocopy C:\Backup\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
robocopy C:\Backup\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem\ F:\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem /Mir



@echo off
:Meldung
echo.
echo.
echo Alle Backups sind auf die
echo Externe-HDD kopiert worden.
echo.
set /P CHS=
CLS
if /I "%CHS%"=="Q" goto :QUIT
goto :Meldung


exit




Den Fehler den er mir für die "DatenSrv01, 02, 04" anzeigt sieht so aus

Datum Uhrzeit FEHLER 2 (0x00000002) Zugriff auf Quellverzeichnis C:\Backup\Backup\DatenSrv04\2014-11-4Testdaten_Datenbank\
Das System kann die angegebene Datei nicht finden.



Im Fall vom DatenSrv03 kann er angeblich Testdaten_Database und Testdaten_Filesystem nicht finden obwohl alle pfade sowie Dateien vorhanden sind bevor das backup startet.

Bin für jeden Infoschnipsel und jede Hilfe dankbar.
 
Zuletzt bearbeitet:
Eben mal bei mir probiert um den Fehlercode nachzustellen. d:\bla existiert nicht um zu testen.

robocopy d:\bla e:\bla /mir

-------------------------------------------------------------------------------
ROBOCOPY :: Robustes Dateikopieren für Windows
-------------------------------------------------------------------------------

Gestartet: Wed Nov 05 11:21:55 2014

Quelle : d:\bla\
Ziel : e:\bla\

Dateien : *.*

Optionen: *.* /COPY:DAT /R:1000000 /W:30

------------------------------------------------------------------------------

2014/11/05 11:21:55 FEHLER 2 (0x00000002) Zugriff auf Quellverzeichnis d:\bla\
Das System kann die angegebene Datei nicht finden.
Daher ist von auszugehen, das es in deinem Fall ebenso ist, das die Quellverzeichnisse nicht existieren. Bitte genau prüfen ob die Schreibweise der Verzeichnisse eingehalten worden sind.
 
Danke für die zügige Antwort. Wie bereits erwähnt sind die Pfade alle vorhanden. Ich hab nen halben Tag damit verbracht gehabt die Schreibweise der Pfade mit denen in der batch zu vergleichen und diese sind zu 100% identisch also verstehe ich nicht warum dieser fehler auftaucht obwohl kein schreib/pfad fehler vorhanden sit
 
Ok. Die Frage ist, wann läuft dieses Script. Da darin ja auf Grund des Systemdatums (stimmt das Datum und die Uhrzeit) das Quell Verzeichniss bestimmt wird.

D.H. wenn es z.B. Heute laufen würde. Dann wird ja aus %date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank das folgende:
2014-11-05Testdaten_Datenbank

Wenn das zum Zeitpunkt wenn das Script startet noch nicht vorhanden ist -> Fehler

2. Frage. Unter welchen Benutzer wird das Script ausgeführt. Hat der Benutzer die entsprechenden Recht um die Verzeichnisse zu lesen

3. Frage. Dateisystem defekt? Eventuell mal zum testen manuell die entsprechenden Verzeichnisse kopieren
 
Das Backup wird gegen 05:00 Morgens gefahren und die zu kopierenden Dateien etc. werden am Abend davor zwischen 20:00-22:00 Uhr von den Datenbanken/Programmen erstellt. Rechte sind Adminrechte. Das backup läuft vom NAS server aus und kopiert das ganze auf eine externe am NAS angeschlossene Festplatte.

Die Dateien werden von einem Anderen Script von den Datenbanken Servern zum NAS verfrachtet (NAS is Windows Server 2008R2 und die Datenbanken Server Sind SUSE Linux Enterprise und die einstellungen in linux wurden alle als sudo ausgeführt). Das Backup von den Linux Servern direkt fahren geht nicht weil die externen backup platten NTFS Format und nicht FAT32 sind.

Wenn ich die Verzeichnisse manuell also strg+c und dann strg+v von A nach B kopiere funzt des ohne Probleme. Wird nix abgebochen dabei geschweige denn das eine Fehlermeldung erscheint.
 
Hi,

Wenn ich die Verzeichnisse manuell also strg+c und dann strg+v von A nach B kopiere funzt des ohne Probleme. Wird nix abgebochen dabei geschweige denn das eine Fehlermeldung erscheint.

Moment! Wenn du die Verzeichnisse von Hand anlegst dann klappt es mit dem Sktip, wenn es automatisiert angelegt wird dann nicht? Dann vermute ich ganz stark, dass dein Backup Skript an sich überhaupt nichts damit zu tun hat! Rechteproblem auf dem System?

VG,
Mad
 
Das Backup wird gegen 05:00 Morgens gefahren und die zu kopierenden Dateien etc. werden am Abend davor zwischen 20:00-22:00 Uhr von den Datenbanken/Programmen erstellt.

Ok. Die entscheidene Frage ist: erzeugt der 20 Uhr Job am Vorabend die richtigen Verzeichnisse? Weil wenn der Backup-Job dann 5 Uhr startet dann erwartet der ein Verzeichnis mit dem aktuellen Datum. Also kurz gesagt, wenn du heute in die Verzeichnisse schaust existieren dort welche mit 2014-11-05....?

@Madman
Ich denke er meint er hat den Inhalt per Copy und Paste manuell kopiert.
 
Zuletzt bearbeitet:
Wie schon erwähnt kann es auch nicht an den rechten liegen. Letzte woche lief das noch ohne zu meckern. Erst seit dieser woche gehts nicht mehr. Rechte sind Adminrechte. Und weder der Chef noch ich haben an den servern irgendetwas gemacht. Das einzigste was ich am NAS gemacht habe war die externe festplatte sauber auszuwerfen und das wars.
Ergänzung ()

Sorry, vergessen zu erwähnen. Das verzeichnis mit dem Aktuellen Datum also "2014-11-05Testdaten_Datenbank" wird gegen 3 Uhr erstellt. Immernoch 2 Stunden bevor das Backup loslegt
 
Zuletzt bearbeitet:
Ok ich sehe gerade das Script benutz einmal das aktuelle Datum und einmal was anderes.

Schau mal bitte nach ob die Verzeichnisse vorhanden sind. Achtung bei 2. ist keine Null bei dem Tag, da das Script so programmiert wurde, das es die Null entfernt.

1. C:\Backup\Backup\DatenSrv04\2014-11-05Testdaten_Datenbank
2. C:\Backup\Backup\DatenSrv04\2014-11-4Testdaten_Dateisystem\

Edit: Das würde auch erklären warum es dann noch letzte Woche lief. Da war das Datum noch zweistellig, und eine führende Null wurde da nicht entfernt.
Für das Script heißt das: Überall wo %WERT1% im Robocopy Befehl verwendet wird muss man sicher stellen, das %WERT1% bei einstelligen Tagen nicht 4 wird sondern 04.

Davon mal abgesehen ist das Script ein ganz schöner Spagetticode :)
 
Zuletzt bearbeitet:
o_O wie gesagt, kenn ich mich mit scripten kaum aus. also versteh ich das jetzt richtig das ich dann überall wo ne 4 steht ne 04 draus machen? oder bei der wert angabe WERT1=1 dann WERT1=01 ändere?
 
Nein so einfach wird das nicht gehen.

Für die genaue Syntax müsste ich auch selber nachschauen, da du aber dafür bezahlt wirst und ich nicht ist das denke ich ein Job für dich :)
Etwas Pseudocode

Prüfen ob %WERT1% < 10 ist
falls ja dann %WERT1% aus 0 und %WERT1% zusammen setzen.

Der entsprechende batch Code muss dann nach

Code:
set /a WERT1 = %WERT2%-%WERT1%
eingefügt werden

Es gibt da sicherlich noch weitaus elegantere Lösungen, aber das ist zumindest die einfachste die mir Einfällt.
 
Zuletzt bearbeitet:
ja na klar das es mein job is :D muss mich da weiter in die materie einarbeiten ABER schonmal vielen lieben dank für die hilfe. Werd dann mal testen/basteln mit deinen infos. Wenns klappt, sag ich bescheid. wenns immer noch nich klappt oder ich doch zu doof bin, sag ich auch bescheid und wechsel dann die branche :P
 
Ach ja, Datumsrechnerei mit Batch, das ist schon eine Qual.

Ist es jetzt doch so, dass also bspw. der Ordner "C:\Backup\Backup\DatenSrv04\2014-11-4Testdaten_Datenbank\", bei dem der Fehler kam, nicht existiert? Wobei aus dieser Zeile
Code:
robocopy C:\Backup\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
heraus gar nicht entstehen dürfte, da dort ja kein %wert1% drinsteht, der Ordnername müsste also heute "2014-11-05Testdaten_Datenbank" gewesen sein. Hast du dich da vllt. irgendwie vertippt beim Einfügen ins Forum?

Wenn's jedenfalls an den Nullen liegt, kannst du zum Bestimmen des gestrigen Datums diese Umrechnerei verwenden (natürlich noch leicht angepasst für's gewünschte Format.)

Code:
set WERT1=1
set WERT2=10
set /a WERT1 = %WERT2%-%WERT1%
if %wert1% lss 10 set wert1=0%wert1%
kannst du dann nehmen, wenn du die Batch nicht an einem Monatsersten oder 9. ausführst. Am 9. deshalb, weil eine Zahl mit 0 vorne als oktal aufgefasst wird, und ein oct9 nicht existiert. Du kannst natürlich vorher noch eine Konstante hinzufügen und später wieder abziehen, dann bleiben aber immer noch die Monatsersten übrig.

Langer Rede kurzer Sinn, Datumsrechnerei mit Batch macht keinen Spaß, aber mit der DATETOJULIAN.BAT von stackoverflow klappt's dann doch soweit.

Und weil wir hier doch so unglaublich hilfsbereit sind, kriegst du hier das Ganze schon mal angepasst für deine Batch:
Code:
@echo off
set anzahl_tage_subtrahieren=1
call :datetojulian %date%
set /a jdn=%jdn%-%anzahl_tage_subtrahieren%
call :juliantodate %jdn% WERT1


robocopy C:\Backup\Backup\DatenSrv01\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv01\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
robocopy C:\Backup\Backup\DatenSrv01\%Wert1%Testdaten_Dateisystem\ F:\Backup\DatenSrv01\%Wert1%Testdaten_Dateisystem /Mir



robocopy C:\Backup\Backup\DatenSrv02\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv02\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
robocopy C:\Backup\Backup\DatenSrv02\%Wert1%Testdaten_Dateisystem\ F:\Backup\DatenSrv02\%Wert1%Testdaten_Dateisystem /Mir



robocopy C:\Backup\Backup\DatenSrv03\%Wert1%Testdaten_Database\ F:\Backup\DatenSrv03\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Database /Mir
robocopy C:\Backup\Backup\DatenSrv03\%Wert1%Testdaten_Filesystem\ F:\Backup\DatenSrv03\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Filesystem /Mir



robocopy C:\Backup\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
robocopy C:\Backup\Backup\DatenSrv04\%Wert1%Testdaten_Dateisystem\ F:\Backup\DatenSrv04\%Wert1%Testdaten_Dateisystem /Mir


:datetojulian
REM CONVERT DATE TO JULIAN DAY NUMBER
REM ANTONIO PEREZ AYALA
REM GET MONTH, DAY, YEAR VALUES
FOR /F "TOKENS=1-3 DELIMS=." %%A IN ("%1") DO SET DD=%%A& SET MM=%%B& SET YY=%%C
REM ELIMINATE LEFT ZEROS
SET /A DD=10%DD% %% 100, MM=10%MM% %% 100
REM CALCULATE JULIAN DAY NUMBER
IF %MM% LSS 3 SET /A MM+=12, YY-=1
SET /A A=YY/100, B=A/4, C=2-A+B, E=36525*(YY+4716)/100, F=306*(MM+1)/10, JDN=C+DD+E+F-1524
goto :eof
 
:juliantodate
REM CONVERT JULIAN DAY NUMBER TO MONTH, DAY, YEAR
REM ANTONIO PEREZ AYALA
SET /A W=(%1*100-186721625)/3652425, X=W/4, A=%1+1+W-X, B=A+1524, C=(B*100-12210)/36525, D=36525*C/100, E=(B-D)*10000/306001, F=306001*E/10000, DD=B-D-F, MM=E-1, YY=C-4716
IF %MM% GTR 12 SET /A MM-=12, YY+=1
REM INSERT LEFT ZEROS, IF NEEDED
IF %DD% LSS 10 SET DD=0%DD%
IF %MM% LSS 10 SET MM=0%MM%
REM SHOW THE DATE
set %2=%YY%-%MM%-%DD%
goto :eof
 
:end
 
@stage

Ich habs heut moin hinbekommen. Der tag gestern war krass vollgepackt mit anderem kram und ner 40t LKW Ladung an troubleshooting >__<

@simpsonsfan
Danke danke auch für deine Antwort und holla die waldfee das script was du da hingelegt hast O_o

zu dem script, ich hab es 1 zu 1 kopiert und lediglich akriebisch die server und verzeichnis namen geändert und ne knappe dreiviertel stunde damit verbracht das hier eingefügte script mit dem original script zu vergleichen

diese zeile
robocopy C:\Backup\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank\ F:\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%date:~-10,2%Testdaten_Datenbank /Mir
macht er richtig und gibt mir des heutige datum aus
diese zeile hier
robocopy C:\Backup\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem\ F:\Backup\DatenSrv04\%date:~-4%-%date:~-7,2%-%WERT1%Testdaten_Dateisystem /Mir
soll mir das verzeichnis/die Datei vom Vortag kopieren und da macht er die 0 weg.
und wie schon erwähnt, letzte woche lief des ohne murks. Ich = script noob

heute morgen das gleiche spiel beim kontrollieren, die heutige war vorhanden, die gestrige nicht aber ich lass es ja seit dem laufen und es klappt mit der if abfrage also jetzt is alles in butter :daumen:

Vielen vielen dank nochmal für eure Hilfe!
 
Zurück
Oben