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

backup script mit robocopy - verbersserungsvorschläge bzw. tipps

Frage Entwicklung Batch & Shell

Mitglied: daarther

daarther (Level 1) - Jetzt verbinden

30.07.2008, aktualisiert 31.07.2008, 10826 Aufrufe, 2 Kommentare

Hallo Community.

Bin neu hier und stell mich erstmal vor:
Alex H. , 25, Hobby-Entwickler, zurzeit für nen kleinen OnlineShop tätig.


Also ich habe die Aufgabe ein Backup Script zu schreiben. Daten von einem Samba-Linux Server sollen gesichert werden.
Anforderungen:

- Daten von Linuxserver sollen auf USB-Platte gesichert werden
- möglichst vollautomatisch zu definierten Zeiten

Da ich freie Hand bei der Umsetzung habe habe ich folgende Option gewählt:

- ich nutze Windows (robocopy)! Kenne mich mit Linux nur beschränkt aus...
- ich werde die Datensicherung von einem Windows Client starten lassen der Zugriffsrechte auf den Linux-Server hat
- die USB-Platte wird bei meiner Lösung an den Windows Client und nicht den Linux-Server angschlossen.
- das ganze wird als geplanter Task ausgeführt

So nun habe ich nach einiger Recherche ein lauffähiges Script zusammengeschustert, was eigentlich von jeder Quelle zu jedem Ziel "sichert".
Die Quell und Zielangabe erfolgt per config.ini Datei. Die wichtigsten Fehler habe ich selbst definiert und lasse alle aktionen des Scripts in eine *.csv LOG-Datei speichern, so formatiert das man sie in Excel öffnen kann. Das Script kompiliere ich mit Shareware zu ner *.exe.

QuellCode:

01.
@echo off 
02.
echo --------------------------- 
03.
echo BackupScript OnlineShop    
04.
echo by Alexander H. 2008  
05.
echo with Robocopy ;)          
06.
echo --------------------------- 
07.
 
08.
set Datum=%date%;%time:~0,2%.%time:~3,2%.%time:~6,2%  
09.
 
10.
for /f "delims== tokens=1,2" %%i in ('findstr "Quelle" config.ini') do @set Quelle=%%j 
11.
for /f "delims== tokens=1,2" %%i in ('findstr "Ziel" config.ini') do @set Ziel=%%j 
12.
 
13.
set "ZielOrdner=%Ziel%%date:~-10,2%_%date:~-7,2%_%date:~-4%_BackupW24"  
14.
 
15.
if not exist %Ziel% if not exist %Quelle% goto :Fehler1 
16.
if not exist %Ziel% if exist %Quelle% goto :Fehler2 
17.
if not exist %Quelle% if exist %Ziel% goto :Fehler3 
18.
if exist %Ziel% if exist %Quelle% goto :CreateAdminLog 
19.
 
20.
:CreateAdminLog 
21.
if exist Adminlog.csv goto :Spaceman 
22.
if not exist Adminlog.csv echo Datum ;Uhrzeit ;Quelle ;Ziel ;Meldung1 ;Meldung2 ;Tipp ;Groesse Quelle (MB) ;Groesse Ziel (MB) (vor Backup) %*>> Adminlog.csv  
23.
goto :Spaceman 
24.
 
25.
 
26.
:Spaceman 
27.
FOR /F "tokens=3 delims= " %%i in ('dir %Ziel% /-c') do set frei=%%i 
28.
set /a ZielMBfrei=%frei:~,-3%/1024 
29.
set "FS=GetFolderSize.vbs 
30.
echo WScript.Echo Int(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)).Size/1024/1024+.99)>%FS%  
31.
for /f %%i in ('cscript //nologo %FS% "%Quelle%"') do set QuelleMB=%%i  
32.
if %ZielMBfrei% GEQ %QuelleMB%   goto :Robocopy 
33.
if %ZielMBfrei% LSS %QuelleMB%   goto :Fehler4 
34.
 
35.
 
36.
:Robocopy 
37.
robocopy %Quelle% %ZielOrdner% /MIR /LOG+:Copylog.txt /TEE  
38.
goto :Erfolg 
39.
 
40.
 
41.
set Meldung1=Backup nicht erfolgreich. 
42.
 
43.
 
44.
:Fehler1 
45.
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 1: Quelle und Ziel nicht erreicht. ;Netzlaufwerk und Freigabe prüfen (auf Server angemeldet?), USB-Platte anschließen ; ; %*>> Adminlog.csv 
46.
goto :Ende_F 
47.
 
48.
 
49.
:Fehler2 
50.
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 2: Ziel-HD nicht erreicht. ;Ziel-HD und Verbindung pruefen ; ; %*>> Adminlog.csv 
51.
goto :Ende_F 
52.
 
53.
 
54.
:Fehler3 
55.
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 3: Quell-HD nicht erreicht. ;Netzlaufwerk und Freigabe prüfen (auf Server angemeldet?,LAN-Kabel defekt?) ; ;  %*>> Adminlog.csv 
56.
goto :Ende_F 
57.
 
58.
 
59.
:Fehler4 
60.
echo %Datum% ;%Quelle% ;%Ziel% ;%Meldung1% ;Fehler 4: Zuwenig Speicherplatz auf Zieldatenträger. ;Platz schaffen (siehe naechste Spalte) ;%QuelleMB%MB-min benoetigt ;%ZielMBfrei%MB-real vorhanden%*>> Adminlog.csv 
61.
goto :Ende_F 
62.
 
63.
 
64.
:Erfolg 
65.
set /a StillFree=%ZielMBfrei%-%QuelleMB% 
66.
echo %Datum% ;%Quelle% ;%Ziel% ;Backup erfolgreich ;%QuelleMB%MB von %Quelle% nach %ZielOrdner% kopiert ;Freier Speicher auf %Ziel% nach Backup: %StillFree%MB ;%QuelleMB%MB-min benoetigt ;%ZielMBfrei%MB-real(vor Backup)  %*>> Adminlog.csv 
67.
goto Ende_E 
68.
 
69.
 
70.
:Ende_E 
71.
cls 
72.
echo Backup erfolgreich ausgefuehrt am %date% um %time:~0,2%.%time:~3,2%.%time:~6,2% 
73.
echo Es wurden %QuelleMB%MB von %Quelle% nach %ZielOrdner% uebertragen. (Infos siehe AdminLog.csv) 
74.
echo Freier Speicher auf %Ziel% nach Backup: %StillFree%MB 
75.
echo (email@web.de) 
76.
pause 
77.
goto :TheEnd 
78.
 
79.
 
80.
:Ende_F 
81.
echo Backup abgebrochen am %date% um %time:~0,2%.%time:~3,2%.%time:~6,2% 
82.
echo Backup nicht erfolgreich - ein Fehler ist aufgetreten.(Infos siehe AdminLog.csv) 
83.
echo (email@web.de) 
84.
pause 
85.
goto :TheEnd 
86.
 
87.
 
88.
:TheEnd 
89.
if exist GetFolderSize.vbs del GetFolderSize.vbs

Es läuft zwar und macht was ich will aber es ist ein Wirrwar aus VB-Script und Shell Programm... wäre nett wenn mir da jemand ein paar Hinweise geben könnte. Was ist zu verbessern, was ok?
Und noch eine vielleicht unverschämte Frage: Was kann für sowas verlangen? Bin neu im Geschäft und auf Erfahrungssuche... ;)


Mit freundlichen Grüßen.daarther
Mitglied: 61801
30.07.2008 um 07:48 Uhr
wiso machst du es nicht ganz in VB?
Oder hast du nur Grundkenntnisse?, denn so finde ich es wirklich etwas "unaufgeräumt", das ist aber nur der optische Faktor, wenn es funktioniert, dann gehts klar. Man muss sich nur zurechtfinden (auch anderen, falls du deine Arbeit mal abgibst)

Naja, wenn du große Datenmengen sicher musst, stellt deine Lösung natürlich nen Engpass dar, weil zuerst alles von der Linux-Platte durchs Netzwerk auf den XP-PC muss, und der muss es dann auf seine USB-HDD schreiben... Aber ohne Linux-Kenntnisse (also für Skripte und so) wird sich das nicht ändern lassen.

Wiso mit Shareware kompilieren? Wiso überhaupst kompilieren?

Also ich (als VB.NET'ler) hät da ne schöne Konsolen-Anwendung gemacht, weil man die Übersichtlichkeit und Verstädnlichkeit um mehrere 1000% steigern kann (sofern man die Sprache kann )

Hast schon mal nach Backup und Linux gegoogelt?
Das springt mir dabei ins Auge:
http://www.tecchannel.de/storage/backup/402533/index6.html



Mit freundlichen Grüßen
Kriechi
Bitte warten ..
Mitglied: daarther
31.07.2008 um 00:11 Uhr
Hallo.

Naja, ja ich muss zugeben ich habe nicht wirklich viel ahnung. Nur Grundlagenkenntnisse.

Habe mir Deinen Link mal angeguckt und es auch probiert...thx

Im Prinzip macht rsync ja nichts anderes als robocopy.
Aber ich finde das ganze in Linux umzusetzen ist nicht grad einfach..aber ich bleib dran.

Hab mir nen Samba Server eingerichtet und nen Windows Client... der Backup mit robocopy am Client ist nur unwesentlich langsamer als der direkte Linux-Server-Backup mit rSync.
(150 MB von Server - über Client - auf USB an Client --> in 1 min, wobei es zwischen USB 2.0 und USB 2.0 scheinbar deutliche Unterschiede gibt... ;))

Warum kompilieren? Weil sonst jemand im Script rumpfuschen könnte und mir das dann in die Schuhe geschoben wird...


Werde morgen bzw. heute erstmal das robocopy script vorstellen und weiter sehen.

Mit freundlichen Grüßen.daarther
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Backup
gelöst Sicherung auf USB Festplatte mit Acronis Backup und Robocopy (5)

Frage von mike7050 zum Thema Backup ...

Backup
Backup mit robocopy - Erklärung benötigt (1)

Frage von haximurati zum Thema Backup ...

Batch & Shell
Backup Script Optimierung und MSSQL (4)

Frage von TommyB83 zum Thema Batch & Shell ...

Backup
Robocopy BackUp Inkrementell und Voll (9)

Frage von Akrosh zum Thema Backup ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...