(Gelöst) Raspi mit entferntem NAS verbinden

Begonnen von is2late, 11 November 2021, 11:59:38

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Zitat von: is2late am 12 November 2021, 11:01:05
Hi,
im Internet "aufräumen" zu wollen, ist sicher ein ambitioniertes Vorhaben  ;)
@connormcl: Womit würdest Du denn kopieren, wenn die von Dir genannten Bedingungen nicht erreicht werden? Alternativ wird auch tar empfohlen.

In der Tat wird das Kopieren mit dd an verschiedenen Stellen empfohlen. Über das o.g. Skript können ja störende Prozesse angehalten werden. Ich habe den Code ua von hier: https://blog.andreas-schmidt-arts.de/2020/12/29/raspberry-pi-automatisches-backup-mit-python-erstellen/
Das liefert 15 dev/rams mit je 4 MiB sowie
Disk /dev/sda: 28,5 GiB, 30579621888 bytes, 59725824 sectors
Disk model: Transcend 32GB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x24eb37d3

Ottos Tipp war also richtig.

Demnach
sudo dd if=/dev/sda of=/media/backups/pibackup-$(date +%d%m%Y-%H%M%S).img bs=1MB
("backups mit s ist richtig, oben Schreibfehler) scheint richtig zu sein; Sicherung läuft gerade. Werde sie später mal zurückspielen und ausprobieren.

Vielen Dank,
Ingo

Wenn /media/backups/ tatsächlich dein Mountpoint auf dem NAS ist...
...weil sonst landet es ja lokal bzw. fraglich was passiert, weil du ja dort hin schreiben würdest von wo du sicherst... ;)

Und später zurücksichern und ausprobieren:

ich würde davor noch mal "offline" sichern... 8)

Und: eine Sicherung mit dd des laufenden Systems KANN schon gut gehen MUSS aber nicht. Daher kann DIESER Test durchaus gelingen, heißt aber nicht, dass es IMMER funktionieren wird...

Mir ist ein Backup/Restore wichtig was IMMER funktioniert.
Daher nehme ich mir die Zeit und sichere offline.

Bzw.: eine Komplettsicherung mache ich höchst selten (meist vor einem kompletten OS-Wechsel).

Mir reicht fhem backup und meine Notizen bzw. Notizen "abgefüllt" in Scripts...
...fhem backup dann automatisiert auf ein NAS...

Damit kann ich dann auch easy auf eine neue HW-/OS-Plattform umziehen.
Ein Komplettimage taugt ja nur für Umstieg auf (sehr) ähnliche HW und ein OS-Umstieg geht so gar nicht...
(außer "hochprügeln" und auch davon halte ich nix)

Viel Erfolg, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

is2late

ZitatWenn /media/backups/ tatsächlich dein Mountpoint auf dem NAS ist...
...weil sonst landet es ja lokal bzw. fraglich was passiert, weil du ja dort hin schreiben würdest von wo du sicherst.
Vermutlich missverstehe ich das, aber liegt der Mountpoint nicht regelmäßig lokal? Dort wird doch nur das ferne Dateisystem eingehängt, oder?

Mein (hoffentlich) letztes Problem:
Ich würde ja nun gern sehen, was auf dem OMV gelandet ist. Anhand des Speicherplatzes lässt sich erkennen, dass etwas passiert ist, aber wie kann man die Dateien sehen? Finde in OMV keine Möglichkeit.  Im Netz  findet sich folgendes Hinweis:
ZitatMit dem auf dem Raspberry vorhandenen Bildbetrachtungsprogramm kann ich problemlos auf das gemountete Verzeichnis und die darin enthaltenen Dateien zugreifen.
Welches Bildbetrachtungsprogramm meint er damit wohl? Oder wie greift man sonst auf ein entferntes (gemountetes) Dateisystem zu?

LG INgo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

MadMax-FHEM

#17
Zitat von: is2late am 12 November 2021, 11:51:55
Vermutlich missverstehe ich das, aber liegt der Mountpoint nicht regelmäßig lokal? Dort wird doch nur das ferne Dateisystem eingehängt, oder?

Also /media/backups muss erst mal LOKAL existieren.
Wenn du nichts weiter tust, dann ist das auch weiterhin nur LOKAL.
Alles was du dort rein schreibst/hin kopierst ist (und bleibt) LOKAL.

Dann "mountest" du "dort hin" deine externe Freigabe, heißt du gibst zwar:

cd /media/backups ein, aber ab da bist du dann nicht mehr lokal sondern eben schon "über die Leitung" remote...

Sollte der mount nicht klappen: bleibt es lokal
Solltest du nicht DORTHIN mounten: ist es lokal

D.h. in diesen beiden Fällen landet alles was du dort (/media/backups) reinschreibst/reinkopierst etc. LOKAL.

-> Linux Dateisystem lernen ;)

EDIT:

nicht gemountet:
PI-A: /media/backups -> ist nur auf PI-A

gemountet:
PI-A: /media/ --|
                   "Leitung"
                         |-> PI-B: /Freigabepfad/...

Alles was bislang auf /media/backups LOKAL auf PI-A war/ist bleibt dort und wird NICHT verändert, du siehst es nur nicht, da du ja (wenn gemountet) immer schon "über die Leitung" auf den PI-B "kuckst" und auch dort "arbeitest"...

D.h. nach dem "unmount" siehst du wieder was LOKAL unter /media/backups liegt/lag (sofern da jemals was war ;)  )...

Zitat von: is2late am 12 November 2021, 11:51:55
Mein (hoffentlich) letztes Problem:
Ich würde ja nun gern sehen, was auf dem OMV gelandet ist. Anhand des Speicherplatzes lässt sich erkennen, dass etwas passiert ist, aber wie kann man die Dateien sehen? Finde in OMV keine Möglichkeit.  Im Netz  findet sich folgendes Hinweis:Welches Bildbetrachtungsprogramm meint er damit wohl? Oder wie greift man sonst auf ein entferntes (gemountetes) Dateisystem zu?

Naja, wenn du auf dem PI wo du mountest (also von dem du ein Backup erstellst) eine grafische Oberfläche hast oder einen "grafischen" Fileexplorer installiert hast (midnightcommader?), dann einfach damit nach /media/backups und alles was du da siehst ist AUF DEM NAS (sofern dorthin gemountet, siehe oben).

Gleiches gilt auf dem NAS-PI, dort ist aber der Pfad (verm.) ein anderer, kommt halt drauf an wie/wo du DORT die Freigabe eingerichtet hast.
Aber: OMV hat doch einen Dateiexplorer "eingebaut"!?

EDIT: ich würde ja erst mal lesen/lernen/verstehen was wo wie, bevor ich einfach irgendwelche (verm. nicht kleinen Dateien) "irgendwo hin" schaufle ohne (genau) zu wissen was ich da tue... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Wernieman

Und mit einem nackten "mount" kann man sehen, was denn alles Gemountet ist.
- 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

is2late

#19
Zitatcd /media/backups ein, aber ab da bist du dann nicht mehr lokal sondern eben schon "über die Leitung" remote...
Das ist ein guter Hinweis. So kann ich jetzt sehen, was auf dem NAS liegt - und es ist tatsächlich die Sicherung von heute Morgen:
pibackup-12112021-105733.img.

ZitatUnd mit einem nackten "mount" kann man sehen, was denn alles Gemountet ist.
Hat auch geholfen, vielen Dank!

Also von beiden Raspi klappt der Transfer der Sicherung auf das NAS, das ist doch schon mal was.
Jetzt suche ich noch eine einfache Möglichkeit, Dateien vom NAS zu verschieben.
Hab dabei an WinSCP gedacht. Kann das entsprechende Verzeichnis ("Backups") auf dem NAS damit auch sehen, bekomme beim Aufruf aber eine Fehlermeldung
Erlaubnis verweigert.
Fehlercode: 3
Fehlernachricht vom Server : Permission denied


Auf dem NAS liegt ein weiterer persönlicher Ordner, der mit Windows über eine Remotedesktopverbindung verknüpft ist. Hier ist der Zugriff über WinSCP problemlos.

Ich muss mich also wohl irgendwie für den Zugriff auf den Ordner "Backups"  via WinSCP legitimieren, aber wie?
Bei den Privilegien auf dem NAS ist (ua) pi als Benutzer mit vollen Rechten eingetragen. Auf dem Raspi ist ebenfalls pi Standardbenutzer.

Vielen Dank, Ingo


Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

is2late

Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Otto123

Moin Ingo,

ZitatJetzt suche ich noch eine einfache Möglichkeit, Dateien vom NAS zu verschieben.
... habe ich nicht ganz verstanden  ???
Windows kann dein NAS Laufwerk per Samba Share verbinden - hast Du ja offenbar eingerichtet sonst ginge der Zugriff per mount cifs nicht. Dafür brauchst Du ein Konto auf der NAS welches in der Gruppe sambashare ist.
Winscp halte ich da für ungeeignet, Du kannst unter Windows auch direkt mit scp arbeiten (CMD). Winscp und Putty nehme ich seit Windows 10 nicht mehr.
scp ist ein andere Weg, da geht es nicht über (Samba) Freigaben sondern über ssh. Du brauchst dafür ein Konto auf der NAS welches in der Gruppe ssh ist.
Lokal auf dem PI hast Du ja einen mount, da kannst Du mit cp bzw. mv direkt arbeiten.

Willst Du Zugriff explorer - like oder Zugriff per Script?

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

is2late

#22
Hallo Otto,

der einfachste Weg wäre mir am liebsten - via Explorer?
Das klappt aber auch schon. Hab die Ordner in den Schnellzugriff verschoben. Läuft.
Vielen Dank für Deine Mühe!

LG Ingo

PS: Ein Problem folgt dem nächsten...
Das eingehängte entfernte NAS bleibt nach einem Neustart nicht eingehängt. Ein Eintrag in die fstab und die rc.local hilft nicht. Allerdings liegt das Betriebssystem auf einem USB-Stick, vielleicht deshalb?
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Wernieman

Wie lautet der Eintrag in der fstab?

ZitatAllerdings liegt das Betriebssystem auf einem USB-Stick, vielleicht deshalb?
Kurze Antwort: Nein
- 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

is2late

Okay, danke!
Ich mach mal einen neuen Thead auf.
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Otto123

Zitat von: is2late am 13 November 2021, 12:02:33
Das eingehängte entfernte NAS bleibt nach einem Neustart nicht eingehängt. Ein Eintrag in die fstab und die rc.local hilft nicht. Allerdings liegt das Betriebssystem auf einem USB-Stick, vielleicht deshalb?
Das ist ein komplexes Thema, welches ich "einfach" durch den mount Befehl bei Bedarf (im script) umgehe.
https://heinz-otto.blogspot.com/2019/04/backup-wenn-der-server-kommt.html
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

MadMax-FHEM

Ich denke auch eher, dass die fstab nicht passt (warum rc.local?).

Evtl. ist das Netzwerk noch nicht "fertig" wenn fstab läuft...

EDIT: warum neuer Thread... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Wernieman

ZitatEvtl. ist das Netzwerk noch nicht "fertig" wenn fstab läuft...
Dafür machen gängige Distris deshalb 2  durchläufe. Einmal zu beginn des Boot-Prozesses, dann nach dem Netzwerk.

Zu Beginn, weil z.B. root/swap ohne Eintrag nicht läuft und damit das System *)
Nach Netzwerk eben für eingehängte netzwerkspeicher (Samba, NFS etc.)

Hinweise:
*) Bei einem Netzwerk-Boot-System muß deshalb das root dem kernel direkt mitgegeben werden .. und dann eben nicht mehr in der fstab. Aber DAS ist ein anderes Thema ;o)
- 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

is2late

#28
Okay, also machen wir hier weiter  ;) So lange Ihr noch Nerv habt...

@Otto: Ehrlich, das Skript überfordert mich. Das ist bestimmt toll, aber ich verstehe nur Bahnhof.

Also, noch einmal der Stand:
An einem pi4 (Nr. 1 genannt, IP:...145) hängt eine SSD mit dem NAS. Auf dieses möchte ich eine automatische Datensicherung eines zweiten pi4 (Nr. 2 genannt, IP:...115) in den Ordner "Backups" (Pfad: NAS/Backups) veranlassen. Das Betriebssystem des Nr.2  liegt auf einem USB-Stick.
Mountpoint angelegt mit
sudo mkdir /media/backups
Gemountet mit
sudo mount -o username=Ingo,password=1234 //192.168.178.145/Backups /media/backups
: df -h  zeigt //192.168.178.145/Backups  938G    136G  803G   15% /media/backups
Sicherung per Hand funktioniert mit
sudo dd if=/dev/sda of=/media/backups/pibackup-$(date +%d%m%Y-%H%M%S).img bs=1MB
Dabei finde ich verblüffend, dass die Sicherung SOFORt erfolgt - scheinbar spielt das Skript mit seiner Terminvorgabe hier (noch) keine Rolle.

Das Skript pibackup sieht so aus:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# R4
# Run this script only with python3
# Script by Andreas Schmidt

import datetime
import shutil
import os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText



# path to usb device
usbdevice_path = "//192.168.178.145/NAS/Backups cifs username=Ingo,password=1234,uid=pi,gid=pi 0 0"

# bigger than 1
number_of_image_files = "3"

# Email address for sending
email_from = "xx@xx.de"

# Password from email address for sending
email_from_pw = "xxx"

# smtp server from email address for sending
smtp_host = "xxx"

# smtp port form email address for sending
smtp_port = 25

# E-mail address to receive the messages
email_to = "xx@xx.de"

# Name of the system
system_name = "NAS"



before_sdcard = shutil.disk_usage("/")
before_sdcard_total = round(before_sdcard.total/1000000000, 2)
before_sdcard_used = round(before_sdcard.used/1000000000, 2)
before_sdcard_free = round(before_sdcard.free/1000000000, 2)

before_usbdevice = shutil.disk_usage(usbdevice_path)
before_free = round(before_usbdevice.free/1000000000, 2)


tstart = datetime.datetime.now().replace(microsecond=0)

if (before_sdcard.total < before_usbdevice.free) and (number_of_image_files >= "1") :
    log00 = (str(system_name) + " - New NAS Backup")
    log01 = (str(tstart) + " Backup NAS is running!")
    print (log01)

    createimg = "sudo dd if=/dev/sda of=" + str(usbdevice_path) + "/pibackup-$(date +%Y%m%d-%H%M%S).img bs=1MB"
    os.system(createimg)

    after_usbdevice = shutil.disk_usage(usbdevice_path)
    after_free = round(after_usbdevice.free/1000000000, 2)

    deleteimg = "sudo pushd " + str(usbdevice_path) + "; ls -tr " + str(usbdevice_path) + "/pibackup* | head -n -" + str(number_of_image_files) + " | xargs rm; popd"
    os.system(deleteimg)

    tend = datetime.datetime.now().replace(microsecond=0)   
    log02 = (str(tend) + " Backup NAS is finished!")
    print (log02)
           
else:
    log00 = (str(system_name) + " - Backup NAS ERROR!")
    log01 = (str(tstart) + " The backup NAS could not be created!")
    log02 = (str(tstart) + " Check the NAS USB device!")
    tstart = 0
    tend = 0
    after_free = before_free
    print (log01)
    print (log02)

now_usbdevice = shutil.disk_usage(usbdevice_path)
now_total = round(now_usbdevice.total/1000000000, 2)
now_used = round(now_usbdevice.used/1000000000, 2)
now_free = round(now_usbdevice.free/1000000000, 2)

storage = ("<style>table {border-collapse: collapse;font-size:14px;}td, th {border: 1px solid #dddddd;text-align: left;padding: 8px;}</style><table><tr><th>Storage</th><th>Total</th><th>Used</th><th>Free</th></tr><tr><td>SD-Card</td><td>" + str(before_sdcard_total) + " GB</td><td>" + str(before_sdcard_used) + " GB</td><td>" + str(before_sdcard_free) + " GB</td></tr><tr><td>External</td><td>" + str(now_total) + " GB</td><td>" + str(now_used) + " GB</td><td>" + str(now_free) + " GB</td></tr></table>")

msg = MIMEMultipart()
msg['From'] = email_from
msg['To'] = email_to
msg['Subject'] = log00
msg.attach(MIMEText(str(log00) + "<br /><br />" + str(log01) + "<br />" + str(log02) + "<br /><br /><br />Time: " + str(tend - tstart) + " | Size : " + str(round(before_free - after_free, 2)) + " GB<br /><br /><br />" + str(storage) + "<br /><br />Backup Pro by Andreas Schmidt", 'html'))
server = smtplib.SMTP(smtp_host, smtp_port)
server.starttls()
server.login(email_from, email_from_pw)
text = msg.as_string()
server.sendmail(email_from, email_to, text)
server.quit()


Der oben angegebene Username und das PW gelten jeweils für das NAS, nicht für den Raspi. Das Skript ist unter /home/pi/ abgelegt.

Sodann in die fstab eingefügt:
//192.168.178.145/Backups /media/backups cifs username=Ingo,password=xxx,uid=pi,gid=pi 0 0
uid und pi  hab ich über "id" bekommen.

Schließlich den Crontab editiert:
30 3 * * 7 python /home/pi/pibackup.py

Zwei Probleme:

1. Zeitgesteuertes Sichern klappt nicht

2. nach einem Neustart ist das Laufwerk nicht mehr gemountet, wie cf -h zeigt. Deshalb habe ich Folgendes versucht:
a) in die Datei /etc/rc.lokal vor dem exit 0 ein "mount -a" gesetzt - hat nicht geholfen. Danach
b) alternativ in dieselbe Datei ein sudo mount -o username=Ingo,password=xxx //192.168.178.145/Backups /media/backups gesetzt - half auch nicht.

Puh, ist noch jemand da?  :-\

Vielen Dank,
Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

MadMax-FHEM

Ich würde ja (wie verm. Otto in seinem Script und so mache ich das auch) im Backup-Script mounten und prüfen, ob das auch geklappt hat...
...weil wenn nicht gemountet ist, dann landet dein Backup LOKAL unter /media/backups (siehe Antwort von mir weiter oben)...

Und was dd macht, wenn dd von sich selbst sichert: keine Ahnung ;)
Aber es ist bestimmt nicht "lustig"...

Zu den anderen Dingen warte ich mal auf Antwort von "Wissenden"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)