Auto Mount Shell Script

Was nützt eine Datensicherung, bei der man manuell eingreifen muss? Der Mensch ist von Natur aus faul und es wäre ziemlich ärgerlich, wenn meine Festplatte im Notebook den Geist aufgibt und die letzte Datensicherung ein paar Tage oder sogar Wochen alt ist.

Ich sitze hier hauptsächlich an meinem Notebook und mache damit privaten Kram, Arbeit und Studienangelegenheiten, gelegentlich sitze ich an einem alten Rechner, aber damit mache ich nichts wichtiges. Wie bereits erwähnt führe ich mit rsnapshot Datensicherungen durch. Bisher hat sich mein Server die Daten per SSH vom Notebook gezogen, aber da ich in meinem eigenen LAN keine Verschlüsselte Verbindung dafür brauche und die durchschnittliche Übertragungsrate nur bei 10-15 MB/s lag, habe ich per NFS einen Ordner meines Servers freigegeben. Jetzt läuft rsnapshot auf meinem Notebook und schiebt die Daten auf meinen Server, dazu muss aber die NFS Freigabe ins Dateisystem eingebunden sein. Dank NFS geht es jetzt deutlich schneller und mit weniger CPU Last.

Da mein “Server” (eigentlich eher ein HTPC mit ein paar Serverdiensten) im Schnitt nur ein paar Stunden täglich läuft, gibt es Probleme mit dem automatischen Einbinden der NFS Freigabe. Beim Booten des Notebooks ist der Server meistens noch ausgeschaltet. Wird der Server eingeschaltet, kann die Datensicherung trotzdem nicht ausgeführt werden, da die Freigabe noch nicht eingebunden ist. Nach langer nicht erfolgreicher Suche hatte ich die Idee einfach etwas wie “mount /media/NFS_Freigabe” in die crontab einzutragen, was dann alle 5 Minuten ausgeführt wird.

Irgendwie erschien mir das aber nicht allzu elegant und entstanden ist ein winziges Shell Script, welches eine Liste von Freigaben (ich mounte auch ownCloud per WebDav bzw. wdfs) in einem Array speichert, prüft ob diese schon eingebunden sind und wenn nicht, werden sie eingebunden. Im Prinzip recht simpel und wahrscheinlich stark verbesserungswürdig, aber vielleicht kann der eine oder andere so etwas ja gebrauchen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
# This is a little script to check if volumes are mounted.
# If a volume is not mounted the script will try to mount it.
#
# Put your volumes between the round brackets,
# one line per volume.
# The volumes have to be in /etc/fstab
# It should look like this:
# VOLUMES=(
# /media/myFolder1
# /media/myFolder2
# )

VOLUMES=(
/media/ownCloud
/media/finn-server
)

for i in ${VOLUMES[@]}
do
if ! [[ $(mount | grep ${i}) ]]; then
mount ${i}
fi
done

Keine Ahnung warum, aber scheinbar entfernt das CodeColorer Plugin Tabs und Leerzeichen am Anfang einer Zeile. Wahrscheinlich eine Einstellungssache, aber ich nutze es zu selten, keine Ahnung. Ich habe es ansonsten hier noch einmal hochgeladen: http://www.finnchristiansen.de/wp-content/uploads/2012/03/mountchecker.sh

Das Ganze wird dann noch mit chmod a+x mountchecker.sh ausführbar gemacht und kann dann von cron z.B. im 5 Minuten-Takt ausgeführt werden, was z.B. so aussehen würde:

1
*/5 * * * * /home/finn/mountchecker.sh

Ich habe diese simple Angelegenheit in ein Script gepackt, weil ich es noch erweitern möchte. Demnächst soll eine Samba Freigabe hinzu kommen und ich will eine kleine Netzwerk Prüfung einbauen, damit die NFS Freigabe nur in meinem LAN versucht eingebunden zu werden. Außerdem möchte ich beim Wechsel des Netzwerkes oder Herunterfahren des Servers die NFS Freigabe wieder aushängen, da rsnapshot ziemlichen Ärger zu machen scheint, wenn die Freigabe zwar eingebunden, aber der Server nicht erreichbar ist.

Vielleicht habe ich mir die kleine Mühe auch umsonst gemacht und jemand kennt eine bessere Lösung. Ich bin über jeden HInweis dankbar!

5 Gedanken zu “Auto Mount Shell Script

  1. Oh, interessant!
    Ich als nicht-wirklich-könner habe ein sh-Script gebastelt, welches beim Start (und ggfs bei Bedarf, Cron ginge natürlich auch) ausgeführt wird und meine Netzlaufwerke einhängt, allerdings per smb. Was anderes habe ich trotz der theoretisch vorhandenen Möglichkeit nicht gebacken bekommen.

    Funktioniert im Grunde recht gut, nur hätte ich recht gerne den Ordner auf dem NAS direkt in einem Ordner auf dem Compi. Das kriege ich nicht hin. Bin doof.

    So sieht eine Zeile exemplarisch aus:
    gvfs-mount smb://DiskStation/video </home/gehirngeheim/.unheimlichgeheimepasswörter

  2. Die Sache mit dem Hostnamen oder die Lanman Sache? Die IP kriegst du ja z.B. über “ping DiskStation” heraus.

    Die Unterstützung für die alte Lanman Sache geht mit nano recht flott.. also “sudo nano /etc/samba/smb.conf” und dann die [global] Zeile suchen (Suchen geht mit Strg + W). Darunter irgendwo dann mit Strg + Shift + V “client lanman auth = yes” einfügen. Strg + O zum speichern und Strg + X zum Beenden.
    Oder alternativ grafisch: gksudo /etc/samba/smb.conf

    Anschließend Samba neuststarten: sudo /etc/init.d/smb restart

    Ob es nun daran liegt… keine Ahnung

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>