Problem mit backupscript
Problem mit backupscript
guten abend , bin recht neu im thema scripts und shell und arbeite derzeit an einem backupscript. sieht bis jetzt so aus : http://hastebin.com/vucevotoyo.bash
doch ich erhalte beim eingeben von "website" den error : http://abload.de/img/screenshot_2016-04-20iwoz0.png
was muss ich tun , damit ich mehrere zeilen ausführen lassen kann ? schreibe ich z.b. nur
w*) echo Backup der Website wird erstellt... ;;
geht es... bzw. könnte ich einfach ein weiteres script ausführen lassen:
w*) ./DASSCRIPT.sh ;;
, doch will es lieber in einem haben ... danke für hilfen!!
und noch 2 weitere fragen : soll ich eher #!/bin/sh oder #!/bin/bash nutzen ? und soll am ende des scripts "done" stehen ?
doch ich erhalte beim eingeben von "website" den error : http://abload.de/img/screenshot_2016-04-20iwoz0.png
was muss ich tun , damit ich mehrere zeilen ausführen lassen kann ? schreibe ich z.b. nur
w*) echo Backup der Website wird erstellt... ;;
geht es... bzw. könnte ich einfach ein weiteres script ausführen lassen:
w*) ./DASSCRIPT.sh ;;
, doch will es lieber in einem haben ... danke für hilfen!!
und noch 2 weitere fragen : soll ich eher #!/bin/sh oder #!/bin/bash nutzen ? und soll am ende des scripts "done" stehen ?
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Problem mit backupscript
Hallo und herzlich Willkommen im Debianforum,
ich empfehle Dir die Lektüre folgender Themen, damit Du die Fehler(Es sind mehrere) aus Deinem Script zu entfernen lernst:
h.
ich empfehle Dir die Lektüre folgender Themen, damit Du die Fehler(Es sind mehrere) aus Deinem Script zu entfernen lernst:
- Bash und Quoting
- Wie genau wird der tar-Befehl benutzt(Die Alte Variante ohne "-" ist nicht empfehlenswert)?
- Was bedeutet das "!" Zeichen in der bash?
- Wie ist die genaue Syntax des case-Konstruktes?
- ...in der bash/tar manpage
- ...Im Ubuntu-Users-Wiki (wiki.ubuntuusers.de)
- ...In der Linuxfibel(http://de.linwiki.org/wiki/Linuxfibel_- ... rammierung)
- ...auf selflinux(http://www.selflinux.org/selflinux/html ... erung.html)
- ...mit ausgiebiger Benutzung der Suchmaschine Deiner Wahl
h.
Re: Problem mit backupscript
Und um den aktuellen Fehler mal zu erklären: Du kannst soviel ausführen lassen, wie du willst. Du musst ihm nur sagen, wieviel du ausführen willst (sonst weiß er ja nicht, wo Schluss ist). Das machst du, indem du ihm sagst, wann du fertig bist. Das machst du mit ";;". Da wo dein ";;" steht, bist du aber noch gar nicht fertig.
Und dass du sowas nicht als root ausführst, solange es nicht absolut fehlerfrei läuft, das weißt du, ja? Da ist der Pfad "/var/customers/webs/website/" zum Testen völlig ungeeignet.
Und dass du sowas nicht als root ausführst, solange es nicht absolut fehlerfrei läuft, das weißt du, ja? Da ist der Pfad "/var/customers/webs/website/" zum Testen völlig ungeeignet.
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001
"No computer system can be absolutely secure." Intel Document Number: 336983-001
Re: Problem mit backupscript
Das mit den ;; dachte ich mir schon, habe das eigentlich getestet am Ende, ging da komischerweise nicht, hab wohl was falsch gemacht, jetzt geht's zumindest...
Was genau meinst du mit das es ungeeignet ist? Und welchen tar Befehl soll ich für sowas verwenden?
Was genau meinst du mit das es ungeeignet ist? Und welchen tar Befehl soll ich für sowas verwenden?
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Problem mit backupscript
Das ist die Alte Variante:
Das ohne "-" ist die alte Variante. Die verhält sich etwas anders und ich empfehle das nicht zu verwenden. Ausserdem ist die Reihenfolge falsch.
Das sichert die datei1,datei2,datei3 und datei.tar.gz unkomprimiert in der Datei z, weil z das Argument für f (=Dateiname) ist.
Das was Du willst - Datei1/2/3 archivieren und komprimieren und in datei.tar.gz speichern, wird so geschrieben:
Nur z und f vertauscht. Kleiner Unterschied, grosse Wirkung.
Code: Alles auswählen
tar cvf ...
Code: Alles auswählen
tar -cvf ...
Code: Alles auswählen
tar -cvfz datei.tar.gz datei1 datei2 datei3
Das was Du willst - Datei1/2/3 archivieren und komprimieren und in datei.tar.gz speichern, wird so geschrieben:
Code: Alles auswählen
tar -cvzf datei.tar.gz datei1 datei2 datei3
Re: Problem mit backupscript
Oh, danke!
Ansonsten ist das Script dann soweit gut? Und geht es leicht, ein Backup dann wieder einzuspielen?
Ansonsten ist das Script dann soweit gut? Und geht es leicht, ein Backup dann wieder einzuspielen?
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Problem mit backupscript
Ein Backup, dass Du nicht mindestens einmal und zu Testzwecken in unregelmaessigen Abständen erneut wiederhergestellt wird ist kein Backup.
Dass Du Dich mit tar vertraut machst - probier einfach mal ein bisschen damit rum - so dass Du es auch wirklich anwenden kannst würde ich Dir schon empfehlen.
Ansonsten: Wenn es das tut, was Du willst und Du das getestet hast, und damit erfolgreich Deine Daten testweise wiederhergestellt hast, dann ist es gut.
Und wie von NAB schon empfohlen. Teste Dein Script nicht mit echten Daten. Teste mit Testdaten(anderes Verzeichnis). Wenn Dein Script einen Fehler enthält, dann sind die echten Daten sonst viellecht mal schnell gelöscht.
Dass Du Dich mit tar vertraut machst - probier einfach mal ein bisschen damit rum - so dass Du es auch wirklich anwenden kannst würde ich Dir schon empfehlen.
Ansonsten: Wenn es das tut, was Du willst und Du das getestet hast, und damit erfolgreich Deine Daten testweise wiederhergestellt hast, dann ist es gut.
Und wie von NAB schon empfohlen. Teste Dein Script nicht mit echten Daten. Teste mit Testdaten(anderes Verzeichnis). Wenn Dein Script einen Fehler enthält, dann sind die echten Daten sonst viellecht mal schnell gelöscht.
Re: Problem mit backupscript
Manchmal ist es besser vielleicht was zu verwenden und natürlich zu verstehen was schon existiert als es selbst neu erfinden zu wollen. Und natürlich musst du das Backup auch regelmäßig testen. Das mit dem "cd /home/..." gefällt mir im übrigen gar nicht. Immer absolute Pfade verwenden. Den einen Befehl würde ich zudem immer von Hand eingeben wollen. Da du zudem scheinbar Konsolenzugriff zu deinem Webspace hast kannst du wahrscheinlich besser ein "rsync über ssh"-Backup durchführen. Schau dir vielleicht mal "rsnapshot" an, wobei das natürlich einen vollkommen anderen Ansatz verfolgt.
Re: Problem mit backupscript
Was heißt absolute Pfade benutzen ?
2. Soll ich #!/bin/sh oder #!/bin/bash benutzen ?
3. soll am Ende vom Script "done" hin ?
Jetziger stand : http://pastebin.com/ru3d9bJn
2. Soll ich #!/bin/sh oder #!/bin/bash benutzen ?
3. soll am Ende vom Script "done" hin ?
Jetziger stand : http://pastebin.com/ru3d9bJn
Re: Problem mit backupscript
Bei "cd /home/janis/" benutzt du einen Pfad, der mit / anfängt. Das ist ein absoluter Pfad. Das ist gut.OldGod78 hat geschrieben:Was heißt absolute Pfade benutzen ?
Aber du prüfst nicht, ob der Befehl erfolgreich ist! Er könnte fehlgeschlagen sein. (fehlendes Verzeichnis, keine Berechtigungen, Festplatte kaputt etc.)
Danach machst du "tar -cvzf $NOW.tar.gz ...". Das NOW.tar.gz kann sonstwo liegen, falls der Befehl davor schief gegangen ist.
Das kannst du ganz einfach lösen, indem du einen absoluten Pfad verwendest: "tar -cvzf /home/janis/$NOW.tar.gz ..."
Wo ist denn der Unterschied?OldGod78 hat geschrieben:2. Soll ich #!/bin/sh oder #!/bin/bash benutzen ?
Nein, da sollte ein "exit" hin.OldGod78 hat geschrieben:3. soll am Ende vom Script "done" hin ?
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001
"No computer system can be absolutely secure." Intel Document Number: 336983-001
Re: Problem mit backupscript
Du benutzt absolute Pfade, dürfte also uninteressant sein.
zu 2. mit /bin/sh wird die dash genommen, die in der Syntax nicht immer vergleichbar der bash ist, nimm #!/bin/bash
zu 3. gäbe es zu sagen: woher weißt du, das es "done" ist?
Nach deinem tar -Befehl gibt es keinerlei Rückfrage ob er erfolgreich war!
Zumindest ein kleines "echo $?" würde darüber Auskunft geben.
ps: bitte nicht plenken...
edit: Huch leider zu spät!
zu 2. mit /bin/sh wird die dash genommen, die in der Syntax nicht immer vergleichbar der bash ist, nimm #!/bin/bash
zu 3. gäbe es zu sagen: woher weißt du, das es "done" ist?
Nach deinem tar -Befehl gibt es keinerlei Rückfrage ob er erfolgreich war!
Zumindest ein kleines "echo $?" würde darüber Auskunft geben.
ps: bitte nicht plenken...
edit: Huch leider zu spät!
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
Macht ohne Haftung funktioniert nicht!
Re: Problem mit backupscript
Zu 1: bei welchen Zeilen muss ich das ändern? Und wie geht so eine Anfrage, ob es funktioniert hat ?
Zu 2: was nun, ist es egal oder bash nutzen?
Zu 2: was nun, ist es egal oder bash nutzen?
Re: Problem mit backupscript
Du "musst" gar nix!OldGod78 hat geschrieben:Zu 1: bei welchen Zeilen muss ich das ändern?
Indem du $? auswertest.OldGod78 hat geschrieben:Und wie geht so eine Anfrage, ob es funktioniert hat ?
Richtig, #!/bin/sh bedeutet "egal", und #!/bin/bash bedeutet "bash". Was du nun willst, weiß ich auch nichtOldGod78 hat geschrieben:Zu 2: was nun, ist es egal oder bash nutzen?
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001
"No computer system can be absolutely secure." Intel Document Number: 336983-001
Re: Problem mit backupscript
Zu 2: Dann mal die Frage , was empfehlt ihr ?
Re: Problem mit backupscript
Entscheide selbst, welche Syntax dir genehmer ist:
http://mywiki.wooledge.org/Bashism
http://mywiki.wooledge.org/Bashism
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
Macht ohne Haftung funktioniert nicht!
Re: Problem mit backupscript
Sowas hab ich in Deutsch gesucht ... da find ich aber nixdetix hat geschrieben:http://mywiki.wooledge.org/Bashism
OldGod78, sämtliche Shells können "POSIX" (das ist ein Standard). Die Bash kann da etwas mehr, was dann die POSIX-Shells nicht verstehen. Schlecht ist keins von beidem ... du musst dich nur entscheiden.
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001
"No computer system can be absolutely secure." Intel Document Number: 336983-001