Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Backup Skript

Frage Entwicklung Batch & Shell

Mitglied: DavidMue

DavidMue (Level 1) - Jetzt verbinden

15.12.2014, aktualisiert 16.12.2014, 1504 Aufrufe, 18 Kommentare, 4 Danke

Guten Tag,

Ich habe wieder einmal eine Skripting aufgabe im Unterricht bekommen, ohne einen Ansatzpunkt zu haben.
(Bin nicht der Stärkste im Skripten und/oder Programmieren )

Befehlstyp: Batch
Art: Skript


Hier geht es darum ein Tägliches Backup eines Ordners Durchzuführen, wobei die Daten die Gestern erzeugt wurden heute Gesichert werden.
d.h. täglich wird der neuerzeugte Ordner gesichert.
Mein Quell Ordner befindet sich hier \\beispiel\HA1CL1... Ziel ist \\beispiel\BK1CL\
Das Skript muss min. 6 Jahre Laufen, also auf Schaltjahre Aufpassen.
Wenn der Quell Ornder aus irgendeinem Grund nicht zu erreichen ist, soll eine Rückmeldung stattfinden, in der Ausgesagt wird, dass der Ordner nicht da ist.


Ich wäre euch dankbar wenn ihr mir einen Denkansatz geben könntet.

Ich habe mich ein bisschen im Internet Schlau gemacht und habe den Befehl "Robocopy" gefunden wäre das in diesem Fall mein "Schlüssel" ?


Gruß

David
Mitglied: nikoatit
15.12.2014 um 11:37 Uhr
Moin,

mit Robocopy kannst du schon mal das meiste abdecken.
Wenn du noch unerfahren damit bist, dann kannst du auch eine GUI dafür benutzen: http://www.heise.de/download/microsoft-robocopy-gui.html

Gruß
Bitte warten ..
Mitglied: DavidMue
15.12.2014 um 11:54 Uhr
Hey,

danke für die schnelle Antwort.

Ich habe das Tool ausprobiert und der hat mir das hier rausgehauen:

01.
robocopy "\\beispiel\david\HA1CL1" "\\med-5233521\Freigabe\Backup" /V /NP /R:10 /W:30
Soweit so gut, aber das Schwierige ist, was man im tool nicht auswählen kann, ist das dass Täglich laufen soll über mehrere Jahre.
Und die Ausgabe, das der Ordner nicht zu erreichen ist, wenn das mal der Fall sein sollte.

kannst du mir da auch noch weiter helfen ?
Bitte warten ..
Mitglied: chiefteddy
15.12.2014 um 12:13 Uhr
Hallo,

dei Zeitsteuerung kannst Du über den Dienst "geplante Tasks" von Windows-Server realisieren.

Dort konfigurierst Du deine Batch als auszuführendes Programm.

Jürgen
Bitte warten ..
Mitglied: nikoatit
15.12.2014, aktualisiert um 12:57 Uhr
Nun kann ich ja davon ausgehen du benutzt Windows als System ;)
Damit der Job töglich abläuft kannst du ihn über die Windows "Aufgabenplanung" laufen lassen.
Das automatische anzeigen von Fehlern ist etwas komplexer...Deshalb gibt es ja auch Backupprogramme zum kaufen ;)
Allerdings gibt es dafür auch kleinere Lösungen wie Blat.
Schau dir mal den Post hier an:
http://www.administrator.de/forum/email-automtisch-per-batch-versenden- ...
Bitte warten ..
Mitglied: DavidMue
15.12.2014 um 13:03 Uhr
Das trifft aber nicht auf mein Problem zu, denn das muss alles geskriptet sein.

Blat hört sich ganz gut an, ich schaue mal wie ich das in mein Skript verbauen kann.
Bitte warten ..
Mitglied: nikoatit
15.12.2014 um 13:25 Uhr
Das trifft aber nicht auf mein Problem zu, denn das muss alles geskriptet sein.
Was meinst du damit?
Du kannst ja schlecht in ein Skript schreiben, dass es sich selbst zu der Zeit XY ausführt...
Windows Aufgabenplanung musst schon mit einbeziehen.
Bitte warten ..
Mitglied: DavidMue
15.12.2014 um 13:37 Uhr
Okay ich habe verstanden was du meinst .

ich werde gleich einen Aufgaben Plan erstellen.
Bitte warten ..
Mitglied: DavidMue
15.12.2014 um 14:58 Uhr
So es funktioniert jetzt nur stoße ich jetzt auf ein Weiteres Problem.

Undzwar hat das Verzeichnis, welches ich kopieren möchte meherer unterverzeichnisse.

\\beispiel\HA1CL1\CL1imss_isfs02\2014\12\14

Also \\beispiel\HA1CL1\CL1imss_isfs02\Jahr\Monat\Tag

Jetzt möchte ich ja nur den vorherigen tag kopieren und das jeden tag.

Wie kann ich das Realisieren ? bestimmt mit einer Schleife aber ich weiß nicht wie :/
Bitte warten ..
Mitglied: Doskias
15.12.2014, aktualisiert um 15:14 Uhr
Mit deinem Scriptcode wäre die Frage leichter zu beantworten.

01.
XCOPY [Quelle] [Ziel] /D /S /H 
könnte dir helfen.

/D:m-d-y Kopiert an oder nach dem angegebenen Datum geänderte Dateien.
Wenn kein Datum angegeben ist, werden nur die Dateien kopiert, die
neuer als die vorhandenen Zieldateien sind.

/S Kopiert Verzeichnisse und Unterverzeichnisse, die nicht leer sind.

/H Kopiert auch versteckte Dateien und Systemdateien.

Alle Parameter findest du hier:
http://support.microsoft.com/kb/240268/de
Bitte warten ..
Mitglied: alaim89
15.12.2014 um 15:13 Uhr
Moin Moin,

Du hast ja die Möglichkeit, sollte das ganze in Batch realisiert werden, das ganze mit Variablen zu Verknüpfen.

z.B. Backupspeicherpfad = \\Beispiel\...
BackupVortag = \\Beispiel\...

das ganze hinterlegst du mit deinem Pfad und kopierst das ganze per Robocopy (Backupvortag oder sonstiges Backup Verzeichnis)

Ich würde dir das ja alles gerne hinterlegen, aber du solltest das Ganze selber probieren und entwickeln, so bekommst du dann auch langsam ein
Gefühl für solche sachen.

Das bietet ein Mehrwert als nur zu kopieren, da spreche ich aus Erfahrung :D


Mit besten Grüßen
Bitte warten ..
Mitglied: DavidMue
15.12.2014 um 15:25 Uhr
Bei 980 GB würde das aber Sehr lange dauern oder liege ich da falsch ?
Bitte warten ..
Mitglied: DavidMue
15.12.2014 um 15:27 Uhr
@alaim89

Hey,
kannst du mir vlt. einen Ansatz hinterlegen ?

wenn ich die Variablen deklariert habe, bin ich ja nicht viel weiter gekommen.
Ich müsste ja die Variablen für eine Schleife verwenden oder ?
Bitte warten ..
Mitglied: Doskias
15.12.2014 um 15:46 Uhr
Wie alaim89 versuche ich dir eine Hilfestellung zur Lösungsfindung zu geben und nicht die Lösung sebst.

Aber wo ist das Problem? Mit /D:m-d-y kannst du das ganze doch begrenzen. Du musst jetzt nur noch m-d-y als variable dekleriaren bzw. füllen und übergeben und es werden nur die Daten übergeben seit dem Tag von dem deine Variable ist.

Ich habe wieder einmal eine Skripting aufgabe im Unterricht bekommen
Davon mal ganz abgesehen, zeigt deine Aufgabe wieder wie völlig hirnrissig die Berufsschule ist. Mal kurz zusammengefasst:

Wir haben einen Ordner, der so wichtige Daten enthält, dass sie täglich gesichert werden müssen. Wir haben eine langzeitplanung von 6 Jahren und wollen darüber hinuas, dass eine Fehlermeldung erscheint, wenn der Quellordner nicht verfügbar ist. Und das ganze sichern wir mit einem einfachen Skript, welches wir über die geplanten Tasks ausführen. Bei so vielen Fehlerquellen die in der Aufgabenstellung einfach ignoriert werden macht die Aufgabe durchaus Sinn. In der Realität würde man (wenn überhaupt nötig) ein kurzes PS-Skript schreiben, was die existenz des zu sichernden Ordners überprüft und im Fehlerfall den Admin informeirt und eine Backupsoftware kaufen um den Ordner zu sichern. Das ist (a) fehlerunanfälliger und (b) vermutlich auch günstiger als die Arbeitszeit des Admins für die Skripterstellung und tägliche Prüfung ob alles erfolgreich war. Aber hey. Es ist Berufsschule und man muss die Schüler ja mit irgendwelchen Aufgaben fern der Realität beschäftigen ;)
Bitte warten ..
Mitglied: alaim89
LÖSUNG 15.12.2014, aktualisiert 16.12.2014
Ist jetzt alles nur Ansatz den ich dir gebe, es gibt verschiedene Lösungsmöglichkeiten,

set "backupspeicher=\\server-01\Programme\Backup"
set "backupVortag=\\server-01\Programme\BackupVortag"


if not exist "%backupVortag%" md "%backupVortag%"


move %backupspeicher%\*.* %backupVortag%\



robocopy %backupspeicher%\*.* \\server-02\Backup\ /s /r:1 /w:1 -> im Fehlerfall erfolgt eine Fehlermeldung nach 1 Sekunde

möchtest du das ganze noch geloggt haben,

robocopy %backupspeicher%\*.* \\server-02\Backup\ /s /r:1 /w:1 /log:\\server-01\Programme\Backup\Logs\Protokoll.txt

Das sind nur Ansätze womit man das ganze verfolgen kann.
Wie soeben gesagt, das ganze kommt mit der Erfahrung und der Ausdauer das ganze zu testen :D

Ich hoffe das ich dir im Ansatz helfen konnte.

Beste grüße
Bitte warten ..
Mitglied: DavidMue
16.12.2014 um 07:39 Uhr
vielen dank, dann lege ich mal los
Bitte warten ..
Mitglied: DavidMue
16.12.2014 um 14:45 Uhr
Hab es fast geschafft Fehlen mir nur noch ein paar kleinigkeiten.

Hier ist das Skript welches ich mit einem Kollegen Ausgearbeitet habe.

Und danke an alle die hier mitgewirkt haben.

01.
@echo off 
02.
 
03.
 
04.
 
05.
set /a tag=%date:~0,2%-1 
06.
set monat=%date:~3,2% 
07.
set jahr=%date:~6,4% 
08.
 
09.
echo %jahr% 
10.
echo %tag% 
11.
echo %Monat% 
12.
 
13.
 
14.
if %tag% EQU 0 set /a monat=%monat%-1 
15.
if %monat% EQU 1 set tag1=31 
16.
if %monat% EQU 2 set tag1=28 
17.
if %monat% EQU 3 set tag1=31 
18.
if %monat% EQU 4 set tag1=30 
19.
if %monat% EQU 5 set tag1=31 
20.
if %monat% EQU 6 set tag1=30 
21.
if %monat% EQU 7 set tag1=31 
22.
if %monat% EQU 8 set tag1=31 
23.
if %monat% EQU 9 set tag1=30 
24.
if %monat% EQU 10 set tag1=31 
25.
if %monat% EQU 11 set tag1=30 
26.
if %monat% EQU 12 set tag1=31 
27.
if %monat% EQU 0 set /a jahr=%jahr%-1 
28.
if %monat% EQU 0 set monat=12 
29.
if %monat% EQU 1 set tag1=31 
30.
if %monat% EQU 2 set tag1=29 
31.
if %monat% EQU 3 set tag1=31 
32.
if %monat% EQU 4 set tag1=30 
33.
if %monat% EQU 5 set tag1=31 
34.
if %monat% EQU 6 set tag1=30 
35.
if %monat% EQU 7 set tag1=31 
36.
if %monat% EQU 8 set tag1=31 
37.
if %monat% EQU 9 set tag1=30 
38.
if %monat% EQU 10 set tag1=31 
39.
if %monat% EQU 11 set tag1=30 
40.
if %monat% EQU 12 set tag1=31 
41.
if %tag% EQU 0 set tag=%tag1% 
42.
 
43.
set datum=%tag%.%monat%.%jahr% 
44.
echo %datum% 
45.
 
46.
set "backupQuelle=\\beispiel1\HA1CL1\CL1imss_isfs02\%jahr%\%Monat%\%tag%\" 
47.
 
48.
echo %backupQuelle% 
49.
 
50.
 
51.
set "backupZiel=\\beispiel2\Freigabe\Backup\%jahr%\%Monat%\%tag%\" 
52.
 
53.
echo %backupZiel% 
54.
 
55.
 
56.
 
57.
Rem if not exist "%backupZiel%" md "%backupZiel%" 
58.
 
59.
 
60.
robocopy %backupQuelle% %backupZiel% /MIR /log+:\\med-5233521\Freigabe\Backup\Logs\Protokoll.txt 
61.
 
62.
 
63.
Rem cd c:\Users\David\Downloads\Blat323.64.full\Blat323\full 
64.
Rem Blat.exe -to hasanhueseyin.uenver@med.uni-duesseldorf.de -server blablabla -s Successful -body Copy war erfolgreich. 
65.
 
Bitte warten ..
Mitglied: Karo
16.12.2014, aktualisiert um 16:47 Uhr
Hallo,

ich möchte auch noch mal was beisteuern

1) "set backup...." in Häkchen finde ich unglücklich. Setze das lieber bei dem Robocopy (s. meine Beispielscripte)
2) DATE ist auch unglücklich. Versuch mal des Script auf einer anderen OS-Sprache (englisch) auszuführen. Gibt Probs. Ich nehme dazu gerne NTDATE aus den AINTX Tools http://www.bretabennett.com/pubstuff/utils/aintx.zip
3) Die Quell- und Ziel-Variablen habe ich zum Anfang gesetzt und werden später nur durch das Datum ergänzt.

Script 1:
Die Kurze Version. Hier wird nach dem NEUSTEN ERSTELLUNGSDATUM der Ordner gesucht. Wenn also der zu sichernde Ordner der zuletzt erstellte ist, funktioniert es. Zum Schluß des Scripts wird ein neuer leerer Ordner mit dem aktuellen Datum erstellt, sodas es in Kuhzunft funktioniert. Frage ist ansonsten, wann wird der Ordner des aktuellen Tages sonst erstellt?
01.
@echo off 
02.
set backupQuelleROOT=\\beispiel1\HA1CL1\CL1imss_isfs02 
03.
set backupZielROOT=\\beispiel2\Freigabe\Backup 
04.
 
05.
for /f "Tokens=1" %%i in ('%~dp0NTDATE.EXE -f %%Y%%m%%d') do (SET CURDATE=%%i) 
06.
ECHO %CURDATE% 
07.
  REM set /A DD=%CURDATE:~6,2%-1 
08.
  REM set /A MM=%CURDATE:~4,2% 
09.
  REM set /A YY=%CURDATE:~0,4% 
10.
 
11.
for /f "Tokens=1" %%i in ('dir %backupQuelleROOT%\ /B /OD /AD /TC') do (SET YY=%%i) 
12.
for /f "Tokens=1" %%i in ('dir %backupQuelleROOT%\%YY%\ /B /OD /AD /TC') do (SET MM=%%i) 
13.
for /f "Tokens=1" %%i in ('dir %backupQuelleROOT%\%YY%\%MM%\ /B /OD /AD /TC') do (SET DD=%%i) 
14.
 
15.
ECHO JAHR    %YY% 
16.
ECHO MONAT %MM% 
17.
ECHO TAG      %DD% 
18.
 
19.
set backupQuelle=%backupQuelleROOT%\%YY%\%MM%\%DD%\ 
20.
echo %backupQuelle% 
21.
 
22.
set backupZiel=%backupZielROOT%\%YY%\%MM%\%DD%\ 
23.
echo %backupZiel% 
24.
Rem if not exist "%backupZiel%" md "%backupZiel%" 
25.
 
26.
ECHO robocopy "%backupQuelle%" "%backupZiel%" /MIR /log+:"\\med-5233521\Freigabe\Backup\Logs\Protokoll.txt" 
27.
 
28.
:CREATENEWFOLDER 
29.
MD "%backupQuelleROOT%\%YY%\%MM%\%DD%\"


SCRIPT2:
Ähnlich lang wie Dein Scipt. Andere Verfahrensweise mit NTDATE und dem Tag zurückrechnen.
01.
@ECHO OFF 
02.
set backupQuelleROOT=\\beispiel1\HA1CL1\CL1imss_isfs02 
03.
set backupZielROOT=\\beispiel2\Freigabe\Backup 
04.
 
05.
for /f "Tokens=1" %%i in ('%~dp0NTDATE.EXE -f %%Y%%m%%d') do (SET CURDATE=%%i) 
06.
ECHO %CURDATE% 
07.
set /A DD=%CURDATE:~6,2%-1 
08.
set /A MM=%CURDATE:~4,2% 
09.
set /A YY=%CURDATE:~0,4% 
10.
 
11.
if /I %dd% GTR 0 goto DONE 
12.
set /A mm=%mm% - 1 
13.
if /I %mm% GTR 0 goto SETDAY 
14.
set /A mm=12 
15.
set /A yy=%yy% - 1 
16.
 
17.
:SETDAY 
18.
if %mm%==1 goto SET31 
19.
if %mm%==2 goto SCHALTJAHR 
20.
if %mm%==3 goto SET31 
21.
if %mm%==4 goto SET30 
22.
if %mm%==5 goto SET31 
23.
if %mm%==6 goto SET30 
24.
if %mm%==7 goto SET31 
25.
if %mm%==8 goto SET31 
26.
if %mm%==9 goto SET30 
27.
if %mm%==10 goto SET31 
28.
if %mm%==11 goto SET30 
29.
if %mm%==12 goto SET31 
30.
 
31.
goto ERROR 
32.
 
33.
:SET31 
34.
set /A dd=31 + %dd% 
35.
goto DONE 
36.
 
37.
:SET30 
38.
set /A dd=30 + %dd% 
39.
goto DONE 
40.
 
41.
:SCHALTJAHR 
42.
set /A tt=%yy% %% 4 
43.
if not %tt%==0 goto SET28 
44.
set /A tt=%yy% %% 100 
45.
if not %tt%==0 goto SET29 
46.
set /A tt=%yy% %% 400 
47.
if %tt%==0 goto SET29 
48.
 
49.
:SET28 
50.
set /A dd=28 + %dd% 
51.
goto DONE 
52.
 
53.
:SET29 
54.
set /A dd=29 + %dd% 
55.
goto DONE 
56.
 
57.
:ERROR 
58.
ECHO %CURDATE%>>\\med-5233521\Freigabe\Backup\Logs\ERROR.txt"" 
59.
ECHO ERROR ERROR ERROR ERROR ERROR ERROR ERROR>>\\med-5233521\Freigabe\Backup\Logs\ERROR.txt"" 
60.
EXIT 
61.
 
62.
:DONE 
63.
if /i %dd% LSS 10 set dd=0%dd% 
64.
if /I %mm% LSS 10 set mm=0%mm% 
65.
set datum=%DD%.%MM%.%YY% 
66.
echo %datum% 
67.
 
68.
set backupQuelle=%backupQuelleROOT%\%YY%\%MM%\%DD%\ 
69.
echo %backupQuelle% 
70.
 
71.
set backupZiel=%backupZielROOT%\%YY%\%MM%\%DD%\ 
72.
echo %backupZiel% 
73.
Rem if not exist "%backupZiel%" md "%backupZiel%" 
74.
 
75.
ECHO robocopy "%backupQuelle%" "%backupZiel%" /MIR /log+:"\\med-5233521\Freigabe\Backup\Logs\Protokoll.txt" 
76.
 
Alles ohne Gewähr ... happy testing

Bye
Karo
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Skript per GPO ausführen - Berechtigungen? (13)

Frage von honeybee zum Thema Windows Server ...

Hyper-V
Altaro VM Backup auf RDX

Frage von smeclnt zum Thema Hyper-V ...

Windows Server
gelöst BackupExec 2016 Fehler beim Backup von Windows 2016 (1)

Frage von Looser27 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...