NAS-Drive Mount in Bash-Script über crontab

M

montharon

Grünschnabel
Hallo liebe Leute,

ich versuche seit Wochen ein rsync Bash-Script für die Sicherung eines Raspberry Pi's zum Laufen
zu bringen und scheitere immer wieder am Einhängen der NAS-Freigabe für das Backup-Ziel.

Am NAS habe ich das entstprechende Verzeichnis per NFS für die statische IP-Adresse des Pi's freigegeben.
Ein Rechteproblem dürfte es nicht sein - habe per SSH die Rechte des Verzeichnisses am NAS überprüft.
Der Owner des Verzeichnisses ist root und die UID der beiden Benutzer (Admin-User am Pi) und Adminstrator
am NAS ist die gleiche...

Zudem habe ich schon Backups ausgeführt, die ich manuell getriggert habe (selbes Bash-Script).

Hier der entsprechende Auszug aus dem Script...

readonly MOUNT_POINT='/mnt/backup'
readonly LOG="${0}".log

echo "SCHRITT 3" >> "${LOG}"
echo "Pruefe Moint-Point..." >> "${LOG}"

if ! mountpoint -q "${MOUNT_POINT}"; then
# Wenn nicht, versuche es einzuhaengen
echo "Backup-Verzeichnis ${MOUNT_POINT} einhaengen." >> "${LOG}"
if ! mount -t nfs 192.168.0.10:/Backup/Pi3A "${MOUNT_POINT}"; then
echo "Beim Einhaengen ist ein Fehler aufgetreten. Die Sicherung wird abgebrochen!" >> "${LOG}"
exit 5
else
echo " Backup-Verzeichnis erfolgreich eingehaengt." >> "${LOG}"
fi
else
echo "${MOUNT_POINT} ist bereits eingehaengt." >> "${LOG}"
fi


Ich vermute, dass es mit der Tatsache zu tun hat, dass das NAS die Festplatten in den Ruhemodus versetzt.
Wenn ich nämlich das Script manuell in der Konsole ausführe, dann funktioniert alles ohne Probleme.

Da ich dachte, dass ich den Mount-Befehlt als Root-User absetzen muss, habe ich den entsprechenden
Cronjob in den crontab des Root-Users, also mittels sudo crontab -e geschrieben.

Der Cron-Job wird auch entsprechend gestartet - ich sehe das am Zeitstempel des angelegten Logfiles.
Zu diesem Zeitpunkt dürften sich das NAS bzw. die HDDs im Ruhemodus befinden.

Vielen Dank für jede Hilfe!
montharon
 
B

Basher

Grünschnabel
Ich habe ein Asus Tinkerboard S mit 16GB eMMC-Speicher und betreibe es ohne µSD-Karte.
Ein USB-Stick ist eingesteckt mit 32GB zum sichern eines vollen eMMC-Images via dd-Befehl.
Dieser Mini-Rechner ist für uns zuhause der lokale DNS; es läuft der Werbefilter "pihole" darauf.

Da ich extrem viel selbst programmiere über BASH-Shellskripte und dabei Perfektion anstrebe,
ergeben sich täglich kleine Änderungen an den Skripten. Daraus ergibt sich die Notwendigkeit
einer zuverlässigen, täglichen Sicherungsroutine. Ein Bash-Skript kümmert sich darum.

Ich habe die tägliche Sicherungsaufgabe bei mir wie folgt gelöst:

Ein Bash-Shellskript namens "wol" kümmert sich um das wecken des als ersten Parameter ${1}
übergebenen Gerätes. Wenn das Gerät in der Liste steht, wird die IP und die MAC in die Variablen
geladen und das Magic-Paket via etherwake auf den Weg gebracht.
Wird das Gerät nicht in der Liste gefunden, wird die geräteeigene arp-Liste mittels Kombination aus
grep und awk-Kommando durchsucht und bei eindeutigem Treffer die IP und MAC ausgefiltert.
Das aufwecken wird begleitet mit sekündlichen Pings, die keinesfalls länger als 1 Sekunde dauern.
Nach dem erreichen des Gerätes wird nach einer kurzen Wartezeit von 5 Sekunden der mount-Befehl
durchgeführt, der dann auch erfolgreich beendet wird. Exit-Status des wol-Skriptes : 0.

Ein Bash-Shellskript namens "backup.xxx" liest die "backup.xxx.conf" ein und in dieser stehen die
anzulegenden Tagesordner, die Wurzelverzeichnisse auf dem NAS und die zu sichernden Dateien.
Das Skript prüft den mount-Status und die Erreichbarkeit der Wurzelverzeichnisse, legt die Tagesordner
an und prüft deren Verfügbarkeit, bevor es jede einzelne Datei kopiert und den Erfolg/Misserfolg im
Logfile backup.xxx.log in /var/log dokumentiert.

2 Befehle stehen hierfür in der crontab [systemweite crontab mit "crontab -e"] ;

der erste um 5 vor 12 löst ein MagicPaket an das NAS aus (WOL=WakeOnLan), um es zu wecken,
das Script pingt es auch jede Sekunde danach an um festzustellen, wann es wach ist und
nach einer Wartezeit von 5 Sekunden mountet es das NAS daraufhin jeden Tag erfolgreich.
(Bootzeit des NAS liegt bei ca. 86-105 Sekunden je nach Tagesform; ist es bereits wach, ist die Aufgabe ruckzuck erledigt)

Der zweite Crontab Befehl um 2 vor 12 prüft den MOUNT-Status des NAS, legt die Tagesordner an und sichert dann darin.
Jede Aktion wird dabei über den Rückgabewert überwacht und Erfolg/Misserfolg in einem Logfile dokumentiert.
Am Ende der Sicherungsaktion wird das Logfile mit ANSI-Farbcodes dann nach HTML konvertiert und mir per eMail zugesandt.
So habe ich jedezeit die Kontrolle über die einwandfreie Funktion der Sicherungsaufgabe.
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

Crontab und Scripts - Problem

Queue für copy Script

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Debian squeeze, Webmin, Samba Freigaben

Oben