Problem mit backupscript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Problem mit backupscript

Beitrag von OldGod78 » 20.04.2016 21:02:49

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 ?

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit backupscript

Beitrag von heisenberg » 20.04.2016 21:13:50

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:
  • 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?
Hilfreiche Dokumentation dazu findest Du... Gruesse,
h.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit backupscript

Beitrag von NAB » 20.04.2016 21:30:59

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.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: Problem mit backupscript

Beitrag von OldGod78 » 20.04.2016 22:04:05

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?

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit backupscript

Beitrag von heisenberg » 20.04.2016 22:10:47

Das ist die Alte Variante:

Code: Alles auswählen

tar cvf ...

Code: Alles auswählen

tar -cvf ...
Das ohne "-" ist die alte Variante. Die verhält sich etwas anders und ich empfehle das nicht zu verwenden. Ausserdem ist die Reihenfolge falsch.

Code: Alles auswählen

tar -cvfz datei.tar.gz datei1 datei2 datei3
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:

Code: Alles auswählen

tar -cvzf datei.tar.gz datei1 datei2 datei3
Nur z und f vertauscht. Kleiner Unterschied, grosse Wirkung.

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: Problem mit backupscript

Beitrag von OldGod78 » 20.04.2016 22:18:17

Oh, danke!

Ansonsten ist das Script dann soweit gut? Und geht es leicht, ein Backup dann wieder einzuspielen?

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit backupscript

Beitrag von heisenberg » 20.04.2016 22:25:09

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.

uname
Beiträge: 12398
Registriert: 03.06.2008 09:33:02

Re: Problem mit backupscript

Beitrag von uname » 21.04.2016 09:55:46

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.

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: Problem mit backupscript

Beitrag von OldGod78 » 21.04.2016 13:04:07

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

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit backupscript

Beitrag von NAB » 21.04.2016 13:46:18

OldGod78 hat geschrieben:Was heißt absolute Pfade benutzen ?
Bei "cd /home/janis/" benutzt du einen Pfad, der mit / anfängt. Das ist ein absoluter Pfad. Das ist gut.
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 ..."
OldGod78 hat geschrieben:2. Soll ich #!/bin/sh oder #!/bin/bash benutzen ?
Wo ist denn der Unterschied?
OldGod78 hat geschrieben:3. soll am Ende vom Script "done" hin ?
Nein, da sollte ein "exit" hin.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Problem mit backupscript

Beitrag von detix » 21.04.2016 13:47:36

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!
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: Problem mit backupscript

Beitrag von OldGod78 » 21.04.2016 14:52:51

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? :D

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit backupscript

Beitrag von NAB » 21.04.2016 15:00:56

OldGod78 hat geschrieben:Zu 1: bei welchen Zeilen muss ich das ändern?
Du "musst" gar nix!
OldGod78 hat geschrieben:Und wie geht so eine Anfrage, ob es funktioniert hat ?
Indem du $? auswertest.
OldGod78 hat geschrieben:Zu 2: was nun, ist es egal oder bash nutzen? :D
Richtig, #!/bin/sh bedeutet "egal", und #!/bin/bash bedeutet "bash". Was du nun willst, weiß ich auch nicht :D
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: Problem mit backupscript

Beitrag von OldGod78 » 21.04.2016 15:58:23

Zu 2: Dann mal die Frage , was empfehlt ihr ? :D

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Problem mit backupscript

Beitrag von detix » 21.04.2016 16:26:44

Entscheide selbst, welche Syntax dir genehmer ist:
http://mywiki.wooledge.org/Bashism
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit backupscript

Beitrag von NAB » 21.04.2016 16:33:27

Sowas hab ich in Deutsch gesucht ... da find ich aber nix :-(

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

Antworten