Backup wenn der Fileserver kommt

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

Vorheriges Thema - Nächstes Thema

Otto123

Die Idee habe ich schon sehr lange im Hinterkopf gehabt: regelmäßig die lokalen backup Pfade vom raspberry auf meine NAS oder einen Windows Server zu kopieren. Alle Schritte sind eigentlich klar, trotzdem habe ich die Umsetzung immer wieder vor mir hergeschoben.
Um die Sache zu erleichtern habe ich eine Art Installationsscript für die komplette Einrichtung gebaut. Vielleicht hilft es Jemanden das Backup auf ein Netzlaufwerk jetzt einzurichten und nicht länger zu warten. ;)
Das Script muss vor Beginn mit ein paar Variablen auf die eigene Umgebung angepasst werden!
Voraussetzung
Im Raspbian ist cifs-utils bereits installiert.
Für die Kommunikation mit FHEM wird mein HTTP Client (Script) benötigt. Das wird selbstständig geladen.
Vorhandene Funktion in FHEM
FHEM selbst sichert - vor jedem update und save - die zu ersetzenden Dateien in den Ordner restoreDir.
Das backup Kommando sichert in den Ordner backup. Es kann von FHEM selbst entweder automatisch vor jedem update oder bei Bedarf (zeitgesteuert) angestossen werden.
Was wird gemacht?
Der Kopiervorgang der backup Dateien vom Raspberry zum Netzlaufwerk wird vom "present" Zustand der NAS gesteuert. Dabei ist es egal ob die NAS per Hand oder per WOL gestartet wurde.
Es wird ein Script gestartet - backupFhem.sh:
  • Das Netzlaufwerk wird nur temporär gemountet.
  • Der Kopiervorgang mit Rsync sichert nur neue Dateien.
  • Es wird in FHEM geloggt, bei Fehlern wird eine Logdatei geschrieben
Das Installationsscript:
  • muss im root Kontext ausgeführt werden (z.B. sudo -su)
  • erzeugt den Eintrag in der fstab
  • erzeugt das Script für den Kopiervorgang
  • erzeugt die notwendigen Geräte in FHEM

Ich hoffe, dass die Kommentare für die weitere Erklärung genügen. Ansonsten gerne fragen.
Eine Komplettversion kann hier heruntergeladen werden.
Etwas umfangreicher steht das Ganze auch in meinem Blog.

Gruß Otto
# Konfiguration der Datei, Server, Ordnernamen und des Benutzerkontos
fcred='smbcredentials'
share='//Server1/Sicherung'
mdir=/media/Sicherung
# Benutzerkonto ablegen
echo 'username=UserName' > /usr/.$fcred
echo 'password=Userpassword' >> /usr/.$fcred
# fstab Eintrag anhängen
echo "$share $mdir cifs noauto,users,credentials=/usr/.$fcred 0 0" >> /etc/fstab
# Ordner erzeugen, Verbindung testen
mkdir $mdir
mount $mdir
mkdir ${mdir}/fhem
umount $mdir
########################
# Ab hier wird das backup Script erzeugt
cat <<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
##########################
# bei Bedarf den HTTP Client herunterladen
if [ ! -e $file ]
then
    echo "$file is missing"
    wget https://raw.githubusercontent.com/heinz-otto/fhemcl/master/$file
    chmod +x $file
fi
# Ab hier werden die FHEM Devices erzeugt
cat <<EOF | bash fhemcl.sh 8083
define BackupFhem dummy
attr BackupFhem room backup
define backupFhemlog FileLog ./log/backupFhem.log fakelog
attr backupFhemlog room backup
define backupCopy DOIF ([Server1] eq "present") ("bash backupFhem.sh")
attr backupCopy room backup
attr backupCopy wait 120
EOF

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

juemuc

Hallo Otto,

warum sicherst Du nicht direkt auf dem NAS? Ich habe mein NAS mit autofs eingebunden und das BAckup läuft direkt auf ein NAS-Verzeichnis. Bei Bedarf wecke ich das NAS vorher auf.
Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Otto123

Hallo Jürgen,

primär: weil ich es genau so wollte :)
Und weil ich nichts im System umbiegen muss, ich sichere ja auch restoreDir.
Mir ging es nicht um die Strategie, ich wollte einen möglichen Weg aufzeigen. ;)

Gruß Otto
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

Hallo
Ist das noch aktuell?
Habe eine Seite gefunden wo es Scheinbar mit FHEM Mitteln geht?
https://forum.fhem.de/index.php?topic=124590.0
Beim Lesen der Nachrichten bin ich aber davon abgekommen.
"sudo ..." unter FHEM geht doch normal nicht?

Werde den Beitrag von Otto Lesen und es damit mal versuchen.
Hab aber ein Ubuntu Server auf einem Zotac.
Hoffe das läst sich leicht anpassen.

Otto123

Hi,
Zitat von: Damu am 02 August 2023, 18:07:50Ist das noch aktuell?
mein Backup läuft noch genau wie damals.
Zitat von: Damu am 02 August 2023, 18:07:50"sudo ..." unter FHEM geht doch normal nicht?
geht schon - wenn man es richtig einrichtet, aber braucht man für einen mount nicht - wenn man den richtig einrichtet ;)

An Ubuntu sollte diesbezüglich nichts speziell sein.

Gruß Otto
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

#5
Habe eine USB_SSD für die Fritzbox bestellt.
Möchte es damit versuchen.
Habe ein Synology, aber das läuft nicht immer.
Die Fritzbox läuft immer, das sollte reichen.
Ich hoffe ich kann es so abändern das es ein Backub auf dem FHEM Server und zusätzlich eines auf das NAS (Fritz.Nas) schreibt.

Der Link von der "Kompletversion" ist leider nicht mehr gültig?

Ist das etwa die:
https://github.com/heinz-otto/raspberry/blob/master/setupBackupFhem2Cifs.sh



Sorry blick da noch nicht durch?
Welches ist die Neuste Version?

Das Script muss ich für meine Nas_Anmeldung abändern? User, Password und Adresse?

Wo muss das Script hin? Home oder FHEM
Wie muss ich es starten? User FHEM?

Sorry blick ich noch nicht ganz durch




Otto123

Du musst es nicht mit einem Setupscript machen, das geht besser Schritt für Schritt um es zu verstehen.
Zitat von: Damu am 03 August 2023, 22:22:10Habe ein Synology, aber das läuft nicht immer.
Aber genau dafür habe ich das ursprünglich mal gemacht: der lokale Backupordner wird weg kopiert wenn der Fileserver aktiviert wird.
https://heinz-otto.blogspot.com/2019/04/backup-wenn-der-server-kommt.html
Erster Schritt ist die Verbindung zum Fileserver (mount) die solltest Du erstmal einrichten und hinbekommen.
Danach kannst Du das BackupScript anlegen und aus FHEM heraus testen.
Als letzter Schritt bleibt das triggern und starten des Scriptes je nach gewünschtem Kriterium. Wenn dein Laufwerk dann immer da ist, musst Du halt zeitlich triggern.
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

Wernieman

ZitatHabe eine USB_SSD für die Fritzbox bestellt.
Möchte es damit versuchen.
Welche Fritte in welcher Version?

Hintergrund: Ältere Fritzboxen unterstützen nur ältere Windows (SMB/CIFS) Verfahren. Muß man beim mounten dann mit Angeben ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Damu

7583 Neuere Version.

Hab es mal mit der Installation auf OTTOS Seite versucht.

Bei "mount ${mp}" kommt:
Zitatsysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=8133888k,nr_inodes=2033472,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=1633348k,mode=755)
/dev/mapper/FHEMZotac--vg-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=24,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=16430)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
configfs on /sys/kernel/config type configfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
lxcfs on /var/lib/lxcfs type fuse.lxcfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=1633344k,mode=700,uid=1000,gid=1000)
damu@FHEMZotac:~$

und bei "umount ${mp}"
Zitatumount: fehlerhafter Aufruf
Rufen Sie ,,umount --help" auf, um weitere Informationen zu erhalten.
damu@FHEMZotac:~$

Das Verzeichnis :/mnt/Sicherung wurde erstellt.

Die fstab:
Zitat# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/FHEMZotac--vg-root /               ext4    errors=remount-ro 0       1
/dev/mapper/FHEMZotac--vg-swap_1 none            swap    sw              0       0
//192.168.178.1/Transcend /mnt/Sicherung cifs noauto,users,credentials=/usr/.smbcredentials 0 0

Im Totalcomander (Win10) sieht das Verzeichnis so aus:
"\\Swissnet\fritz.nas\Transcend"

Wernieman

Bei "mount ${mp}" kommt:Kann es sein, das $mp bei Dir leer ist? Jedenfalls zeigt ein mount ohne parameter alle gemounteten Objekte, was man in Deinem Code-Tag sieht. Deshalb kann dann der umount auch nicht klappen
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

genau ;) - also entweder (für ein Script)
mp=/mnt/Sicherung
mount ${mp}
oder einfach
mount /mnt/Sicherung ;D
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

Danke
"mount /mnt/Sicherung"
geht.

Die fstab sieht für das Fritznas so aus:
Zitat//192.168.178.1/fritz.nas/Transcend/backup /mnt/Sicherung cifs noauto,users,credentials=/usr/.smbcredentials 0 0

Die ".smbcredentials"
steht in "/usr"
Besitzer root
Berechtigung 640 oder reicht 600?

Sollte das nicht im home Verzeichnis sein?

Otto123

Zitat von: Damu am 04 August 2023, 19:14:58Besitzer root
Berechtigung 640 oder reicht 600?
In meiner Notiz steht die Beschreibung unter Punkt 2.

Zitat von: Damu am 04 August 2023, 19:14:58Sollte das nicht im home Verzeichnis sein?
Du willst doch nicht mit einem User sondern auch mit anderen Usern (fhem) verbinden können, deswegen steht es zentral.
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

Wie kann ich feststellen das die
"/usr/.smbcredentials"
Datei und Ordner die Richtigen Berechtigungen haben.
"EOF" und "EOI".
Hatte ich noch nie?

Habe diese Anleitung genommen, weil diese nur die Minimalste Freigabe für Dateien macht.
Nach anderen Anleitungen wäre ich vieleicht schon am Ziel.

Otto123

#14
ls -lha /usr/.smbcredentialshttps://wiki.ubuntuusers.de/Rechte/

Zitat von: Damu am 05 August 2023, 10:10:39"EOF" und "EOI".
Hatte ich noch nie?
Das ist Anfang und Ende von einem "Heredoc". Ein einfacher "Trick" um Texte im Block zu behandeln. https://linuxize.com/post/bash-heredoc/
Wenn Du das nicht verstehst oder willst lässt Du die erste und letzte Zeile einfach weg, die Befehle stehen so da wie Du sie Zeilenweise ausführen kannst. Achtung, ich arbeite immer mit Variablen! Die müssen gefüllt sein. Manchmal werden sie in meinen Anleitungen ein paar Codeblöcke vorher gefüllt! ;)
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

#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

Damu

#30
Hab die
"FHEMbackup.sh"
gestartet.

Jetzt hab ich:
"2023.08.06 11:04:02 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed error:1408F09C:SSL routines:ssl3_get_record:http request (peer: 127.0.0.1)"

Im Log
Es wurde nichts auf das Fritznas geschrieben.

Die Dateiberechtigung von "backupFhem.sh" ist 644
Die Dateiberechtigung von "fhemcl.sh" ist 755

Die fhemcl.sh geht auf Port 8083 und http.
Denke das wird nicht gehen.


Damu

Zitat von: softwear am 06 August 2023, 10:33:26Ist 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

Es geht mir darum Backups nicht nur auf dem FHEM Server zu speichern auch zusätzlich noch aus einer SSD mit Fritznas.
Synology ist schon besser und sicherer aber bei mir selten Online.
Fritznas ist immer Online.
Ist sowas auch geplant?
"Nas einbinden - Backup auf Nas schreiben - Nas anbindung lösen" ?

Otto123

#32
Zitat von: Damu am 06 August 2023, 11:17:16Hab die
"FHEMbackup.sh"
gestartet.
Was steht denn da drin? Von einer Datei mit dem Namen war hier doch noch nie die Rede?
Zitat von: Damu am 06 August 2023, 11:17:16Die fhemcl.sh geht auf Port 8083 und http.
Denke das wird nicht gehen.
Warum machst Du es falsch, wenn Du weißt das es nicht geht?  :-X  :-\

Steht denn etwas in /opt/fhem/backupFhem.log ?

Hast Du überhaupt schon mal ein paar Tests gemacht? Klappt denn das mounten der NAS? Kannst Du darauf schreiben? Es macht doch keinen Sinn Scripts zu starten, wenn die Grundlage nicht erledigt ist?
mdir=/media/Sicherung
...
# Ordner erzeugen, Verbindung testen
mkdir $mdir
mount $mdir
mkdir ${mdir}/fhem

touch ${mdir}/fhem/test.txt
ls ${mdir}/fhem/test.txt
rm ${mdir}/fhem/test.txt

umount $mdir
Ich meine, wenn man meine Beschreibung einfach von oben nach unten ab arbeitet ohne bei jeder Zeile irgend wohin abzubiegen, sollte das erfolgreich sein.
Soweit ich verstanden habe, ist der einzige Wert der in meinem Beispiel nicht in einer Variable steht (die natürlich angepasst werden müssen) die Portnummer von FHEMWEB. Die hast Du schon erkannt und ignorierst diese Erkenntnis jetzt?
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

Ganz langsam

Wenn ich den mount mit user Home mache kann ich schreiben,löschen etc (user fhem nicht)
Wenn der mount mit user Fhem ist kann es Fhem löschen,etc (user home nicht)

Geht das den auch mit https:9083?
Oder nur mit http:9083?

Ist mir klar das mit den Ordner etwas nicht passt.
Die Werte 8083 9083 hab ich in beiden Dateien angepasst.


Otto123

Zitat von: Damu am 06 August 2023, 15:06:03Wenn ich den mount mit user Home mache kann ich schreiben,löschen etc (user fhem nicht)
Wenn der mount mit user Fhem ist kann es Fhem löschen,etc (user home nicht)
so soll es sein.  ;D

Zitat von: Damu am 06 August 2023, 15:06:03Ist mir klar das mit den Ordner etwas nicht passt.
Das versteh ich nicht.

Zitat von: Damu am 06 August 2023, 15:06:03Geht das den auch mit https:9083?
Es ist mMn unnötig kompliziert lokal über ssl zu arbeiten, aber es sollte gehen (falls ssl ohne Kompromiss funktioniert) ich habe es selbst nie probiert!
Beispiel:
bash fhemcl.sh https://localhost:9083 "set BackupFhem gestartet"Kann sein, dass dein Zertifikat mit localhost nicht geht, dann musst Du den richtigen DNS Namen einsetzen.
Zitat von: Damu am 06 August 2023, 15:06:03Die Werte 8083 9083 hab ich in beiden Dateien angepasst.
Du solltest einen solchen Befehl in der Kommandozeile testen!

Zwei Dateien?  ???
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

#35
Werde ich testen.
Noch das log
ZitatSo Aug  6 15:10:32 CEST 2023
no response from http://localhost:9083
rsync: mkdir "/mnt/Sicherung/fhem/FHEMZotac" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(675) [Receiver=3.1.2]
no response from http://localhost:9083
FHEMZotac in /mnt/Sicherung/fhem/FHEMZotac ist der Name vom FHEM Server.
Das wird hier falsch aufgelöst

Otto123

Zitat von: Damu am 06 August 2023, 15:28:46/mnt/Sicherung/fhem/FHEMZotac" failed: No such file or directory
naja da stimmt der Pfad nicht. Den Pfad mkdir ${mdir}/fhem musst Du einmal beim einrichten anlegen. Den Pfad für den Rechner macht mW rsynch.
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/$(hostname)
muss weg, dann scheints zu klappen.

Https geht leider nicht, FHEM startet dann neu....

Ist es möglich die Ausgabe nur ins Log zu schreiben.
Die Prüfung für fhemcl.sh zu entfernen etc..

Otto123

Zitat von: Damu am 06 August 2023, 18:04:45Https geht leider nicht, FHEM startet dann neu....
Das würde mich näher interessieren ... das ein SSL Zugriff FHEM neu starten soll  :o

Das Script ist doch nur ein Vorschlag, Du kannst es doch modifizieren wie Du willst. Streich die Ablauf-Protokollierung einfach raus. Wozu willst Du die im Log? Fehler werden ja ins Log geschrieben.
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

Zitat von: Damu am 06 August 2023, 12:05:30Es geht mir darum Backups nicht nur auf dem FHEM Server zu speichern auch zusätzlich noch aus einer SSD mit Fritznas.
Synology ist schon besser und sicherer aber bei mir selten Online.
Fritznas ist immer Online.
Ist sowas auch geplant?
"Nas einbinden - Backup auf Nas schreiben - Nas anbindung lösen" ?

Du kannst die Beschreibung des Moduls von Cooltux gerne lesen. Genau das von Dir beschriebene Vorgehen wird praktiziert. Bei einem Backup in fhem wird dieser Backup nach der Erstellung auf ein Nas bzw. in eine Cloud kopiert, das Original gelöscht. Bezüglich Nextcloud/Diskstation geschieht das per WebDAV-Protokoll. Alternative Protokolle wären, wie gesagt, kein größeres Problem einer Implementierung. Ob und wann Cooltux das mitzieht, müsstest Du ihn fragen, wenn Interesse Deinerseits besteht.

Eventuell würde ich das auch einbauen, allerdings ist bei mir persönlich aktuell wenig freie Zeit verfügbar. Aber wer weiß, manchmal packt's mich zwischendurch mal...