staging.inyokaproject.org

vor Backup prüfen ob Hd gemountet ist

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

weholei

Anmeldungsdatum:
7. Februar 2019

Beiträge: 878

Mir ist schon mal das System durch ein Backup Script vollgelaufen, weil die externe HD nicht aus dem Tiefschlaf erwacht ist.

Ich möchte ein "Script" einbauen, das sollte prüfen, ob die Platte gemountet ist.

Wenn nicht, die Platte mountet.

Bei Fehlschlag Mail an root schickt.

Bei Erfolg das Backscript ausführt.

Ich nehme dankbar jede Anregung an, bin aber unerfahren mit srcipten.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14402

weholei schrieb:

..., das sollte prüfen, ob die Platte gemountet ist.

Das Script könnte z. B. findmnt bzw. dessen Rückgabewert benutzen. Z. B.:

- nicht gemountet:

:~$ findmnt /dev/sda2; echo $?
1

- gemountet:

:~$ findmnt /dev/sda1; echo $?
TARGET SOURCE    FSTYPE OPTIONS
/      /dev/sda1 ext4   rw,noatime,errors=remount-ro,commit=300,data=ordered
0

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Andere Möglichkeit wäre stat:

1
2
3
4
5
dir=/mount/point

if [ "$(stat -c %m "$dir")" = "$dir" ]; then
  echo mounted
fi

JensHol

Anmeldungsdatum:
31. Oktober 2017

Beiträge: 324

Ich habe auf jeder Platte eine Datei mit dem Namen ID-A, ID-B etc. angelegt wo ich im Skript einfach prüfen kann ob die existiert 😉

weholei

(Themenstarter)

Anmeldungsdatum:
7. Februar 2019

Beiträge: 878

Danke mal für die Antworten

Das sind leider chinesische Zeichen für mich, ich werde aber gerne mal probieren. sry lubux deines ist mir zu hoch

Dass es mir eine Mail schickt, wenn nicht gemountet ist, sehe ich aber nicht, oder?

Ich hätte zwar was in der Richtung, ist aber für Windows Sicherung gemacht und fast 20 Jahre alt.

Hat aber lange funktioniert, aber Mail glaube ich, kam auch nicht.

Das hat mir der geschrieben der mich mit Linux angefixt hat 😉

Das umzumodeln ist aber eine hohe Hürde.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#! /bin/sh
# Script zur Erstellung einer Sicherungskopie der wichtigsten Daten
# Der / wird zum maskieren der \ gebraucht !
#/script # smbmount /\/\buero/\mail /mnt -o username=backup,password=backup
#tar cvzf  /who1/backups/mail /mnt
RECHNER=/\/\buero
SHARE=/\atlan
WORKGROUP=Hofmann
USER=backup
PWD=backup
MNT=/mnt
#BACKUP_VERZ=Backup
MOUNT=/\usr/\bin/\smbmount
UMOUNT=/\bin/\umount
SAVE=/who1/backups/backup.buero.atlan.`date +%d.%m.%y`
FILES=mnt                
PACK="tar cvzf" 
WHO=/who1

echo "Datensicherung beginnt"

# Netzlaufwerk mounten (vorher vorsichtshalber unmounten)
$UMOUNT $MNT
#$MOUNT $RECHNER$SHARE $MNT -U $USER%$PWD -W WORKGROUP || (echo "mounten fehlgeschlagen !" & exit )
$MOUNT  $RECHNER$SHARE $MNT -o username=backup,password=backup
#$MOUNT $RECHNER$SHARE $MNT -U $USER%$PWD 

# Ins Backupverzeichniss wechseln
cd /
cd $FILES

# Packe alle Dateien incl. Unterverzeichnisse

$PACK $SAVE.atlan.tgz * $FILES 

# Kopiere die Zipdatein ins Sicherungsverzeichniss

#cp -R *.tgz $MNT 
 
# Zipdateien löschen und gemountetes Netzlaufwerk wieder freigeben
echo "gebe Mountpoint $MNT wieder frei, und lösche gepackte Dateien"

# *tgz
cd $WHO
$UMOUNT $MNT


echo "Datensicherung erfolgreich beendet"

Ich muss dazu sagen, meine Backups laufen oft Wochen unbeaufsichtigt, eine Mail bekomme ich schneller mit

1
2
3
4
5
werner@ubu-20-home:~$ chmod 770 test.sh 
werner@ubu-20-home:~$ ./test.sh 
mounted
werner@ubu-20-home:~$ ./test.sh 
werner@ubu-20-home:~$ 

Danke @rklm, aber ist noch nicht ganz was ich brauch

Bearbeitet von rklm:

Syntaxhighlighting

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14402

weholei schrieb:

... lubux deines ist mir zu hoch

Hier ein kleines Beispiel:

:~$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0  74,5G  0 disk 
├─sda1   8:1    0  73,6G  0 part /
├─sda2   8:2    0     1K  0 part 
└─sda5   8:5    0  1013M  0 part [SWAP]
:~$ sh -x ./retval.sh sda1
+ /bin/findmnt /dev/sda1
+ echo gemounted
gemounted
+ exit 0
:~$ sh -x ./retval.sh sda2
+ /bin/findmnt /dev/sda2
+ echo nicht gemounted
nicht gemounted
+ exit 0
:~$ cat retval.sh
#!/bin/sh -e
#
if /bin/findmnt /dev/$1 > /dev/null 2>&1; then
	echo "gemounted"
else
	echo "nicht gemounted"
fi
exit 0

weholei

(Themenstarter)

Anmeldungsdatum:
7. Februar 2019

Beiträge: 878

Danke Lubux für deine Mühe

Nach langem Versuchen habe ich es geschafft deinen Hinweis nachzuvollziehen.

Zuerst mal bin ich über deinen Prompt gestolpert, was ich für Befehlszeichen gehalten habe.

Klar, Login Namen stellt man nicht ins Internet.

Allerdings bin ich inzwischen mit dem Vorschlag von rklm weitergekommen, da die Syntax meinem uralten Backup Script ähnelt.

Zumindest habe ich schon mal geschafft, einen Befehl aufzurufen wenn eine Bedingung erfüllt ist.

root@ubuxx-xx:~# cat retval.sh
#!/bin/sh -e
#
if /bin/findmnt /dev/$1 > /dev/null 2>&1; then
	echo "gemounted"
else
	echo "nicht gemounted"
fi
exit 0
root@xxxx-xxx:~# ./retval.sh 
gemounted

Aber um das in mein Backup-Script zu einzubauen, dass ich nicht 2 Scripte aufrufen muss, bräuchte ich vielleicht noch Hilfe

Auch eine Mail, wenn das Backup fehlschlägt wäre nicht schlecht

./edit verständlicher gemacht - hoffentlich

weholei

(Themenstarter)

Anmeldungsdatum:
7. Februar 2019

Beiträge: 878

Ich glaube, jetzt da ursprüngliche script so umgebaut zu haben, dass vorher geprüft wird, ob das Laufwerk gemountet ist und, wenn nicht, eine Mail schickt.

Ein Mailsystem auf dem localhost habe ich eingerichtet.

Ich erlaube mir, es zu posten, falls noch jemand nach so etwas sucht.

Falls jemand einmal darüber schauen möchte, der mehr Ahnung hat als ich, wäre nett, damit niemand in die Irre geführt wird.

Den Login Namen habe durch x ersetzt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /bin/sh
# Script zur Erstellung einer Sicherungskopie der wichtigsten Daten
SAVE=/backup/geschaeft/backup.daten.`date +%d.%m.%y.%H.%M.%S`
FILES=/home/xxxxx/eigene_dateien/aktuell/IBM/daten
PACK="/usr/bin/zip -R" 
dir=/backup
#
#
#fragt ab ob das Laufwerk gemountet ist
if [ "$(stat -c %m "$dir")" = "$dir" ]; then
echo mounted
# wenn ja, Ins Backupverzeichniss wechseln
cd $FILES
# Packe alle Dateien incl. Unterverzeichnisse
$PACK $SAVE.zip * $FILES 
echo "Datensicherung erfolgreich beendet"
else
# mail an localhost, dass das Backup fehlgeschlagen ist
echo "mounten fehlgeschlagen" | mail -s "Laufwerk /backup nicht  gemounted"  "xxxxxx@localhost"
echo "backup fehler"
fi 
# Der / wird zum maskieren der \ gebraucht !
#SHARE=/\Backup
#MNT=/backups
#BACKUP_VERZ=Backup
#

Die "Variabel" am Anfang hat mein Vorgänger in Großbuchstaben geschrieben, hat das einen Grund?

Fall jemand eine Idee hat, wie man auch ganze Verzeichnisse sichern kann, würde ich mich freuen.

Bearbeitet von rklm:

Bitte nutzt doch das Syntaxhighlighting!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Für die Lesbarkeit ist es auch sehr hilfreich, wenn Du Code in Kontrollstrukturen (Zeilen 11 bis 16 und 18 bis 20) einrückst.

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Zeile 10, also die hier:

if [ "$(stat -c %m "$dir")" = "$dir" ]; then

Kann man auch einfach ersetzen durch:

if mountpoint -q "$dir"; then 

weholei

(Themenstarter)

Anmeldungsdatum:
7. Februar 2019

Beiträge: 878

Danke an alle für die Hilfe, es klappt jetzt

Für die Lesbarkeit ist es auch sehr hilfreich, wenn Du Code in Kontrollstrukturen (Zeilen 11 bis 16 und 18 bis 20) einrückst

Und meine Zeilen werde ich bei nächsten Mal einrücken, danke für den Hinweis

./. edit läut bestens, danke für die Tipps

Antworten |