Bash - War anders Script erfolgreich - Ablauf

  • Hallo zusammen.


    Ich brauche mal eure Hilfe bei einem Bash Script. Ich habe noch keine Shell Scripte geschrieben und komme damit noch nicht so ganz klar.


    Was soll das Scipt machen?
    Ich möchte ein automatisches Backupscript schreiben. Es soll erst einmal schauen ob der USB Stick gemounted ist. Dann per dd ein Backup der SD Karte machen. War das erfolgreich, dann mit pishrink das Image auf eine notwendige Größe verkleinern. Und wenn das auch erfolgreich war, dann das das verkleinerte Image noch einmal auf einen anderen USB Stick kopieren (doppeltes Backup).


    Was habe ich bis jetzt?

    Testen ob die Sticks gemounted sind.

    dd mit test ob erfolgreich.


    Was brauche ich noch?
    Check ob PIshrink erfolgreich war.

    Optimierungen...


    Das Bash Script, bis jetzt:



    Kann mir jemand sagen wie ich prüfe ob PIshrink erfolgreich durchgelaufen ist?
    Und kann man das Script noch optimieren? Ich habe ein ähnliches Script gefunden das diverse Services vorher gestoppt hat. Z.B. Apache, Cron, etc. Ist das zu empfehlen? Auch habe ich teilweise Anleitungen gesehen die dd mit noch weiteren Parametern füttern. Sind diese notwendig und wozu sind sie (z.B. bs=1M conv=sync,noerror iflag=fullblock)?

    Sonstige Anmerkungen, Verbesserungsvorschläge?
    Danke.

  • Zum Beispiel verkleinern des Images auf die eigentliche belegte Partitionsgröße ... also die 'leere' entfernen. Geht mit PIshrink. Weiß nicht ob es noch ein anderes Tool gibt. Dann rausfinden ob das ohne Fehler funktioniert hat und das Image nochmals auf einen anderen USB Stick kopieren.

    Mit dem Tool ist das auch nur durch ein Wrapperscript möglich. Genauso wie das anhalten der Services.

  • Hallo,


    wenn ein Linux / Unix Programm sauber programmiert ist, dann sollte es immer 0 (den Wert null) als Rückgabewert haben, wenn es erfolgreich beendet ist. Da müsstest du bei pischrink halt mal schauen, ob das auch der Fall ist.


    Wenn du prüfen willst, ob nicht _ein_ Stick eingebunden ist, sondern _der_ Stick, dann müsstest noch die Device-ID abfragen.


    Zu deiner Frage zu dd: dd kennt eine ganze Reihe von Optionen. Wann man die braucht -> RTFM :)


    Gruß, noisefloor

  • Zum Beispiel verkleinern des Images auf die eigentliche belegte Partitionsgröße ... also die 'leere' entfernen.

    Es gibt den Konfigurationsparameter DEFAULT_DD_BACKUP_SAVE_USED_PARTITIONS_ONLY dafür. Siehe die FAQ hier

    Quote


    Mit dem Tool ist das auch nur durch ein Wrapperscript möglich. Genauso wie das anhalten der Services.

    Für das Anhalten der Services benötigst Du kein Wrapperscript. Das machst Du mit den Optionen -a und -o. Siehe auch FAQ.


    Ansonsten zum Script:


    1. Nicht immer sudo benutzen. Einmal testen ob root der Benutzer ist (wird man durch sudo)

    2. Code einrücken. Liest sich einfacher und hilft CodierungsFehler zu vermeiden

    3. Sauber immer alle RCs bei jedem Befehl anfragen. Oder

    Bash
    set -o pipefail -o nounset -o errexit

    an den Anfang des Scripts stellen.

    4. trap benutzen um im Fehlerfalle bzw Abbruch mit CTRL-C aufzuräumen.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :shy: Bei mir tut das automatisch raspiBackup ;)