Seite 1 von 2

Komplett-Image erstellen per script

Verfasst: 05.03.2021, 17:25
von Daimler
Hallo Gemeinde,

ich beiße mir hier trotz der vielen Anleitungen im Netz die Zähne aus und verzweifele langsam. :cry:

Da mein bisheriges Verfahren, die SD außerhalb des Pi per Tool zu klonen zwar funktioniert, aber sehr schnell in Vergessenheit gerät, möchte ich gerne in Intervallen ein Komplett-Image der SD-Karte per Script erstellen.

ein

Code: Alles auswählen

dd if=/dev/mmcblk0 of=/mnt/Backup/Images/Imagename-$(date +%Y%m%d-%H%M%S).img bs=4MB status=progress
habe ich nach x Fehlschlägen gerade noch hinbekommen.
Aber es hat sich gezeigt, dass ein Backup bei laufender CCU und Syslog-Server nicht das Wahre ist, also müssten beide Dienste vorher beendet und nach der Kopie wieder gestartet werden.

Aber ich bekomme das im Script einfach nicht hin.
Scheitere schon am #!/bin/bash, das man in allen Beispielen sieht
Ergebnis:

Code: Alles auswählen

-bash: /home/pi/Scripts/backup.sh: /bin/bash^M: bad interpreter: No such file or directory
systemctl stop pivccu.service
ergibt:

Code: Alles auswählen

Failed to stop pivccu.service\x0d.service: Unit pivccu.service\x0d.service not loaded.
service syslog-ng stop
ergibt

Code: Alles auswählen

Usage: /etc/init.d/syslog-ng {start|stop|restart|reload|force-reload|status}
schreibe ich das dann so in das Script
/etc/init.d/syslog-ng stop
kommt die gleiche Meldung. :shock:

Ich blicke da nicht mehr durch.

Kann mir Linux-Depp bitte jemand das Script hier einstellen (sollte ja nur ein 5 Zeiler sein) bzw. mir auf die Sprünge helfen? :roll:
Pi 3B+
VERSION_ID="9"
VERSION="9 (stretch)"

Re: Komplett-Image erstellen per script

Verfasst: 05.03.2021, 17:57
von stan23
Daimler hat geschrieben:
05.03.2021, 17:25
bash: /home/pi/Scripts/backup.sh: /bin/bash^M: bad interpreter: No such file or directory

Failed to stop pivccu.service\x0d.service: Unit pivccu.service\x0d.service not loaded.
Sowohl das ^M als auch das 0x0d sind ein <CR> bzw. Carriage Return, ein Teil des Window-Zeilenumbruchs, der bei Linux nicht üblich ist.
Dadurch sind da eben Zeichen die man nicht sehen kann, die aber den Befehl verändern.

Windows: <CR> + <LF>
Unix: nur <LF>

Welchen Editor benutzt du?
Kann man da die Zeilenumbrüche zu Unix konvertieren?
Notepad++ bietet sowas an.

Re: Komplett-Image erstellen per script

Verfasst: 05.03.2021, 18:54
von Daimler
Hi Marco,

du bist mein Held. :D

Ich nutze zwar Notepad ++, hatte den aber iwann mal auf Windws umgestellt - da muss man erst einmal drauf kommen.

Das komplette Backup Script sieht nun so aus

Code: Alles auswählen

#!/bin/bash
systemctl stop pivccu.service
service syslog-ng stop
dd if=/dev/mmcblk0 of=/mnt/Backup/Images/piVCCU_205_85-$(date +%Y%m%d).img bs=4MB status=progress
service syslog-ng start
systemctl start pivccu.service
pishrink.sh /mnt/Backup/Images/piVCCU_205_85-$(date +%Y%m%d).img
Jetzt will ich nur noch hoffen, das dier per crontab -e hinzugefügte Job auch läuft.
Habe ihn mal auf morgen eingestellt - schau'n mer mal.

P. S.
Wie kann man eigentlich innerhalb des Scrips in ein Verzeichnis wechseln - cd will nicht :?:

Re: Komplett-Image erstellen per script

Verfasst: 05.03.2021, 18:57
von deimos
Hi,

ich würde an deiner Stelle vor dem dd Befehl noch eine Zeile "sync" einfügen, damit alle Filesystem Caches auf die Karte geschrieben werden, sonst kann es schnell in einem inkonsistenten Backup enden.

Viele Grüße
Alex

Re: Komplett-Image erstellen per script

Verfasst: 05.03.2021, 19:05
von Daimler
Hi,

danke für den Hinweis!

Also so:

Code: Alles auswählen

dd if=/dev/mmcblk0 of=/mnt/Backup/Images/piVCCU_205_85-$(date +%Y%m%d).img bs=4MB  && sync status=progress
:?:

Re: Komplett-Image erstellen per script

Verfasst: 05.03.2021, 19:08
von deimos
Hi,

nein.

Code: Alles auswählen

...
service syslog-ng stop
sync
dd ...
Viele Grüße
Alex

Re: Komplett-Image erstellen per script

Verfasst: 05.03.2021, 19:37
von Daimler
Hi,

danke dir. :D

Re: Komplett-Image erstellen per script

Verfasst: 06.03.2021, 07:56
von Daimler
Hi,

melde Teilerfolg. :D

Nur der pishrink.sh läuft nicht. :shock:

Das Script:

Code: Alles auswählen

#!/bin/bash
systemctl stop pivccu.service
service syslog-ng stop
sync
dd if=/dev/mmcblk0 of=/mnt/Backup/Images/NAME-$(date +%Y%m%d).img bs=4MB status=progress
service syslog-ng start
systemctl start pivccu.service
pishrink.sh /mnt/Backup/Images/NAME-$(date +%Y%m%d).img
läuft aber über die Konsole einwandfrei.

Was ist das denn schon wieder? :cry:

Re: Komplett-Image erstellen per script

Verfasst: 06.03.2021, 07:58
von stan23
Wo liegt denn pishrink.sh?
In einem Verzeichnis das in $PATH steht?
Ansonsten gibt mal den kompletten Pfad zu pishrink.sh an.

Re: Komplett-Image erstellen per script

Verfasst: 06.03.2021, 08:42
von Daimler
Hi,

danke für die Antwort.
Die liegt in /usr/local/bin und das Verzeichnis steht im Pfad bzw. in der /etc/profile.
Habe aber trotzdem jetzt einmal
stan23 hat geschrieben:
06.03.2021, 07:58
den kompletten Pfad zu pishrink.sh
in das Script eingetragen.
Melde mich.

Ich werde das verm. nie verstehen.
Warum geht etwas von der Konsole und im Script nicht?
Den 'Windows' Lapsus lassen wir mal außen vor. :roll: