Backup wenn der Fileserver kommt

Begonnen von Otto123, 28 April 2019, 20:31:39

Vorheriges Thema - Nächstes Thema

Damu

#15
Danke für die Antwort:

ZitatLast login: Fri Aug  4 18:48:23 2023 from 192.168.178.44
damu@FHEMZotac:~$ ls -ldh /usr/
drwxr-xr-x 11 root root 4.0K Aug  4 11:44 /usr/
damu@FHEMZotac:~$ ls -ldh /usr/.smbcredentials
-rw-r----- 1 root cifs 39 Aug  4 11:46 /usr/.smbcredentials
damu@FHEMZotac:~$

Zitatdamu@FHEMZotac:~$ ls -lha /usr/
insgesamt 92K
drwxr-xr-x  11 root root 4.0K Aug  4 11:44 .
drwxr-xr-x  23 root root 4.0K Feb 18  2022 ..
drwxr-xr-x  2 root root  36K Aug  2 12:43 bin
drwxr-xr-x  2 root root 4.0K Dez  6  2021 config
drwxr-xr-x  2 root root 4.0K Apr 24  2018 games
drwxr-xr-x  37 root root 4.0K Aug  2 12:43 include
drwxr-xr-x  67 root root 4.0K Nov 17  2022 lib
drwxr-xr-x  10 root root 4.0K Mai 31  2019 local
drwxr-xr-x  2 root root  12K Aug  2 12:43 sbin
drwxr-xr-x 137 root root 4.0K Aug  2 12:43 share
-rw-r-----  1 root cifs  39 Aug  4 11:46 .smbcredentials
drwxr-xr-x  8 root root 4.0K Feb 18  2022 src
damu@FHEMZotac:~$

Zitatdamu@FHEMZotac:~$ ls -lha /usr/.smbcredentials
-rw-r----- 1 root cifs 39 Aug  4 11:46 /usr/.smbcredentials
damu@FHEMZotac:~$

Hoffe das stimmt so?

Otto123

Sieht gut aus:
Root read write -  6
Cifs read       -  4
Alle anderen nix - 0

Deine Nutzer die mounten sollen müssen in der Gruppe cifs sein.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damu

#17
Jetzt geht es hier
https://heinz-otto.blogspot.com/2019/04/backup-wenn-der-server-kommt.html
weiter.

Ist
Zitatmdir=/media/Sicherung

Oder sollte es
Zitatmdir='/media/Sicherung'
heisen?

Da brauch ich eigentlich nur der 2 Teil ab hier.
Zitatcat <<EOF > /opt/fhem/backupFhem.sh
qpath="/opt/fhem"
dpath=$mdir
LOG=backupFhem.log
if [ -d "log" ];then LOG="log/\$LOG";fi
# check if fhemcl exists
file=fhemcl.sh
{
date
if [ ! -e \$file ]
then
    echo "\$file is missing"
    wget https://raw.githubusercontent.com/heinz-otto/fhemcl/master/\$file
    chmod +x \$file
fi
# mount, sync
mount "\$dpath"
bash fhemcl.sh 8083 "set BackupFhem gestartet"
if rsync -rut \${qpath}/backup \${qpath}/restoreDir \${dpath}/fhem/\$(hostname)
then
  bash fhemcl.sh 8083 "set BackupFhem gesichert"
else
  bash fhemcl.sh 8083 "set BackupFhem ERROR"
fi
umount "\$dpath"
} >> \$LOG 2>&1
EOF

Das sollte eine Datei : "backupFhem.sh"

auf :"/opt/fhem" erstellen

Sollte so sein
Zitatcat <<EOF > /opt/fhem/backupFhem.sh

mdir="/mnt/Sicherung"
mount /mnt/Sicherung
mkdir ${mdir}/fhem
umount $mdir
qpath="/opt/fhem"
dpath=$mdir
LOG=backupFhem.log
if [ -d "log" ];then LOG="log/\$LOG";fi
# check if fhemcl exists
file=fhemcl.sh
{
date
if [ ! -e \$file ]
then
    echo "\$file is missing"
    wget https://raw.githubusercontent.com/heinz-otto/fhemcl/master/\$file
    chmod +x \$file
fi
# mount, sync
mount "\$dpath"
bash fhemcl.sh 9083 "set BackupFhem gestartet"
if rsync -rut \${qpath}/backup \${qpath}/restoreDir \${dpath}/fhem/\$(hostname)
then
  bash fhemcl.sh 9083 "set BackupFhem gesichert"
else
  bash fhemcl.sh 9083 "set BackupFhem ERROR"
fi
umount "\$dpath"
} >> \$LOG 2>&1
EOF

Die 8083 oder für mich 9083 kann die auch ausgelesen werden?


Otto123

Zitat von: Damu am 05 August 2023, 15:10:50Ist
Zitatmdir=/media/Sicherung

Oder sollte es
Zitatmdir='/media/Sicherung'
heisen?
Ist egal solange keine Leerzeichen im Pfad sind - zum Test:
Zitatpi@raspib3:~ $ mdir=/media/Sicherung
pi@raspib3:~ $ echo $mdir
/media/Sicherung
pi@raspib3:~ $ mdir='/media/Sicherung'
pi@raspib3:~ $ echo $mdir
/media/Sicherung
Zitat von: Damu am 05 August 2023, 15:10:50Die 8083 oder für mich 9083 kann die auch ausgelesen werden?
Die 8083 / 9083 ist der FHEM Port - hier im Beispiel ohne weiteren Zugangsschutz (Benutzer / Passwort - kann aber angegeben werden)

Wie meinst Du das mit auslesen? Das Port oder mit dem Script einen Wert auslesen? Ersteres nein, Letzteres:
bash fhemcl.sh 9083 "{Value('BackupFhem')}"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damu

Ich hab FHEM auf dem Port 9083 (9083-9086).
Ich meine die Portnummer vom "WEB FHEMWEB xxxx global"
Ich hab es dazumal so gemacht möchte es noch so belassen.
Ist doch korrekt das hier die Portnummer von "WEB FHEMWEB" stehen muss?

Otto123

Zitat von: Damu am 05 August 2023, 17:20:47Ist doch korrekt das hier die Portnummer von "WEB FHEMWEB" stehen muss?
Ja korrekt - nur die Portnummer primär auslesen mit dem Script geht nicht, denn das script fhemcl.sh arbeitet ja über die Web Schnittstelle.

Die Portnummer ist die minimale Angabe die das Script fhemcl.sh braucht, dann geht es davon aus es lokal auf diesem Host auf die Webschnittstelle von FHEM ohne Anmeldung zugreifen kann.
Hier findest Du mehr darüber https://github.com/heinz-otto/fhemcl
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damu

Zitat-bash: /opt/fhem/backupFhem.sh: Keine Berechtigung
Mit user Home geht das bei mir nicht.

Otto123

Läuft dein FHEM mit user HOME?  ::)
Gemacht ist doch das Ganze um es aus FHEM heraus auszuführen - klar kannst Du (wenn Du verstehst was Du tust) einzelne Schritte auch mit anderen Usern tun.
In /opt/fhem darf aber normal nur user fhem schreiben ;)

Funktioniert denn ein "bash backupFhem.sh" in der FHEM Kommandozeile? Die "" gehören dazu!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damu

ZitatLäuft dein FHEM mit user HOME?
Mit User FHEM.


Das wird doch über Putty geschrieben?
Aber über Putty hab ich kein User FHEM

Mit Sudo ist doch auch nicht gut?

Otto123

#24
Zitat von: Damu am 05 August 2023, 20:29:42Das wird doch über Putty geschrieben?
Aber über Putty hab ich kein User FHEM
wie kommst Du jetzt darauf  :'(

Die FHEM Kommandozeile ist Dein FHEMWEB im Browser, die normale Eingabe Zeile am oberen Rand. Der Befehl oben ist ein Shell Befehl in FHEM https://fhem.de/commandref_DE.html#command

BTW: Putty braucht man seit vielen Jahren nicht mehr! Windows 10 hat ssh und scp an Board!

Aber klar kannst Du es auch im Terminal (oder wie Du meinst putty ;) ) mit user fhem starten:
sudo -u fhem bash ~/backupFhem.sh
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damu

#25
Hallo Otto

Eine
"backupFhem.sh"
ist in FHEM doch nicht enthalten.

Diese wird mit:
Zitatcat <<EOF > /opt/fhem/backupFhem.sh
.....
EOF
erzeugt und in "/opt/fhem abgelegt.

ZitatDas backup Script
Damit alles in einem "Rutsch" ohne großes Hin und her funktioniert, habe ich das Script zur Sicherung als Here Doc abgelegt. Dabei wird die Konfigurationsvariable $mdir aus dem ersten Schritt verwendet! Die anderen $Variablennamen sind deshalb mit \ geschützt und EOF steht nicht in ' '.

Wie das mit dem Here Doc geht muss ich googeln
Binn ich der Erste der diese Anleitung versucht?


Damu

So gehts:
"sudo -u fhem bash"
Befehle ausführen, mit
"exit"
beenden.

Otto123

Zitat von: Damu am 06 August 2023, 07:59:40Wie das mit dem Here Doc geht muss ich googeln
Binn ich der Erste der diese Anleitung versucht?
Kann sein  ???
Mein Link zum Here Doc war nicht gut?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

softwear

Ist das fhem-Modul backupToStore eventuell eine Option? Aktuell nutzbar für die Nextcloud und bei mir weiterentwickelt für die Synology DiskStation - Cooltux baut das aktuell ein. Es wäre auch kein Problem, ein anderes Protokoll als WebDAV zu implementieren.

Oder geht es hier darum, einen Backup genau dann zu übertragen, wenn der FileServer online geht, weil er ansonsten im Energiesparmodus dahindümpelt und durch eine Backupsicherung nicht geweckt werden soll? Oder geht's ums Lernen/Üben der Kommandozeile?

Hauptsache, es macht Spaß! In jedem Fall viel Vergnügen beim Entwickeln!

softwear

Otto123

Zitat von: softwear am 06 August 2023, 10:33:26Oder geht's ums Lernen/Üben der Kommandozeile?
Derzeit geht es glaub ich darum ;)
Aber danke für die Info mit dem Modul.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz