openmediavault und rsync
openmediavault (omv) bringt das mächtige Tool rsync mit, dass sich hervorragend für die Datensicherung eignet.
Die Installation von omv auf einem Raspberry Pi beschreibe ich im Artikel 👉 openmediavault auf einem Raspberry Pi installieren und konfigurieren.
Möchtest du Daten zwischen omv und einem Raspberry Pi (oder einem anderen Linux-Server) austauschen, dann eignet sich rsync besonders gut.
Der Zugriff von omv auf den entfernten Raspberry Pi erfolgt mit SSH. Der Dienst muss dort aktiviert und ein Benutzer mit SSH-Rechten muss vorhanden sein.
Die Konfiguration auf Seite von omv ist schnell erledigt. Das NAS-System hat einen festgelegten Ablauf, von dem nicht abgewichen werden kann.
Auf deinem Raspberry Pi dagegen sieht das anders aus. Dort kannst du entweder ein bestehendes Benutzerkonto verwenden, oder ein neues Benutzerkonto nur für die rsync-Aufgaben anlegen.
rsync Tasks
omv bringt den Service rsync in der Standardinstallation mit. Damit können Ordner und Dateien intern zwischen verschiedenen omv-Laufwerken und auch zwischen dem NAS und anderen Rechnern/Servern hin und her kopiert werden.
Das geht in beide Richtungen:
pull
⬅️ = omv <-- Serverpush
➡️ = omv --> Server
Mit der Option pull
⬅️ kannst du sehr einfach eine Datensicherung von einem entfernten System auf dein omv holen.
Mit den Option push
➡️ geht es in die andere Richtung, von omv zum Server.
Der Charme bei beiden Varianten, du benötigst keine Konfiguration in Form von Cron Jobs und / oder Shell-Skripten auf dem entfernten Server. Alle Einstellungen werden in omv erledigt und der Synchronisationslauf wird dort entweder mithilfe eines CRON oder manuell über die Weboberfläche gestartet.
Fehlt der SSH-Server auf dem entfernten Linux-Server, kannst du das Paket aus den Repositories nach installieren:
sudo apt-get install openssh-server
In diesem Beispiel wird rsync mit der pull-Option ⬅️ konfiguriert. Es kann z.B. von einem Nextcloud-Server in regelmäßigen Abständen eine Datensicherung von unterschiedlichen Verzeichnissen, z.B. Konfigurations-Dateien, Datenverzeichnis, Theme-Verzeichnis, etc. geholt und auf den dafür vorgesehenen NAS-Freigaben gespeichert werden.
Codeberg
Zum imagebackup Skript
-
Zur openmediavault Themenseite - 👉 klicke hier
-
Zur Nextcloud Themenseite - 👉 klicke hier
-
Zur Raspberry Pi Themenseite - 👉 klicke hier
Der Pull Job wird wie im Screenshot dargestellt konfiguriert:
Der Source Server
ist nach dem Schema einzutragen:
benutzername@ip-address:/home/benutzer/test
benutzername
= Benutzer auf dem entfernten Serverip-address
= IP-Adresse des entfernten Servers/home/benutzer/test
= zu synchronisierendes Verzeichnis derbenutzername
benötigt Zugriff auf den Ordner bzw. Datei!
Note
Der Benutzer benutzername
benötigt auf dem Server einen Zugriff auf den Ordner bzw. Datei, den du per rsync
zu omv übertragen möchtest.
Möchtest du einen Systemordner oder geschützte Dateien kopieren, musst du eine andere rsync-Option verwenden oder die Konfiguration wie weiter unten beschrieben anpassen.
Als Authentifizierungsmethode habe ich Public Key gewählt.
Bei diesem Verfahren erstellt omv automatisch ein SSH-Schlüsselpaar, einen privaten und einen öffentlichen Schlüssel.
Im Menü _System - Certificates - SSH_
sind alle erstellten Schlüssel aufgelistet.
Du kannst dabei nur auf den öffentlichen Schlüssel zugreifen. Der private Schlüssel wird über die omv-Weboberfläche aus Sicherheitsgründen nicht angezeigt.
Über die CLI kannst du beide SSH-Schlüssel anzeigen lassen. omv verwaltet den öffentlichen und privaten Schlüssel jeweils im Verzeichnis /etc/ssh
.
Raspberry Pi - entfernter Server
Den öffentlichen Schlüssel musst du kopieren und auf deinem Raspberry Pi in der Datei ~/.ssh/authorized_keys
hinterlegen.
Melde dich dazu per SSH auf deinem entfernten Server mit deinem benutzername an.
ssh benutzername@ip-addresse
nano ~/.ssh/authorized_keys
Füge den öffentlichen Schlüssel einfach am Ende der Datei ein und speichere die Änderung.
Du kannst auch die Eigentümerschaft und die Zugriffsrechte auf die Datei einschränken, sodass nur noch sudo oder root die Datei ~/.ssh/authorized_keys
ändern können. Damit verliert der Benutzer, in dessen Home-Verzeichnis sich ~/.ssh/authorized_keys
befindet, dass Recht die Datei zu ändern. Nach der Anpassung der Rechte benötigst du sudo um Einträge zu ändern.
sudo chown root:root ~/.ssh/authorized_keys
sudo chmod 644 ~/.ssh/authorized_keys
Fehler - Host key verification failed
omv baut keine Verbindung zum Server auf.
Die Fehlermeldung
Host key verification failed
Die Lösung
- Melde dich mit deinem Benutzer per SSH an omv an
- Wechsle zum Benutzer
su
- Stelle eine SSH-Verbindung zu deinem Raspberry Pi her
- Akzeptiere den neuen Fingerprint mit yes
ssh benutzer@ip-address-of-openmediavault
Nach der erfolgreichen Anmeldung bei omv
sudo su
````
```bash
root@omv:/home/benutzer# ssh benutzer@ip-address
root@omv:/home/benutzer# ssh benutzer@ip-address
The authenticity of host 'ip-address (ip-address)' can't be established.
ECDSA key fingerprint is SHA256:sdsdsdsdsdsdsdsdsdsdsd/ererererererererer.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ip-address' (ECDSA) to the list of known hosts.
rsync
von omv aus funktioniert und die Daten können vom Raspberry Pi geholt ⬅️ werden.
Die Aufgabe kann manuell über die Weboberfläche gestartet werden.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
rsync - Deep Dive
Kopieren großer Datenmengen zwischen 2 omv-Laufwerken
Es lassen sich über die CLI schnell und einfach Ordner und Dateien zwischen zwei internen omv Laufwerken kopieren.
Es gibt zwei Kommandos für das Kopieren:
cp
rsync
cp ist der bekanntere Befehl von beiden. Der kleine Nachteil, es wird kein Kopierfortschritt angezeigt.
Nach der Eingabe des Befehls wird einfach nichts mehr angezeigt, bis alle Daten kopiert worden sind. Die einzige Möglichkeit irgendetwas zu erfahren, ist z.B. über top oder htop. Dort kann man den Prozess verfolgen und schauen, ob der cp-Prozess noch läuft.
Wesentlich besser eignet sich der rsync-Befehl für das Kopieren vom Daten auf der CLI. Der Fortschritt wird hier angezeigt.
Über die omv-Weboberfläche lassen sich die Mount Points der angeschlossenen Festplatten sehr einfach finden und gleich in die Zwischenablage kopieren.
Der rsync-Befehl lt.:
rsync -a --info=progress /srv/dev-disk-by-uuid-11111111111/quelle/daten /srv/dev-disk-by-uuid-2222222222222/ziel
rsync von Systemdateien und geschützten Dateien
Im Abschnitt 👉 Tasks habe ich bereits darauf hingewiesen, dass der Benutzer mit dem der rsync-Befehl auf dem entfernten Server ausgeführt wird Zugriff auf die Daten benötigt.
Das trifft eigentlich auf alle Dateien im eigenen Home-Verzeichnis /home/benutzer
zu. Möchtest du aber Dateien von anderen Benutzern sichern oder gar Systemdateien, dann wird ein Fehler angezeigt.
Please wait, syncing to ...
receiving incremental file list
rsync: [sender] opendir "/etc/scripts/pi" failed: Permission denied (13)
pi/
sent 28 bytes received 73 bytes 202.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1819) [generator=3.2.3]
ERROR: The synchronisation failed.
END OF LINE
Ursache
Der Benutzer, der den rsync-Prozess auf dem entfernten Server ausführt, hat keine Rechte für den Ordner /etc/scripts/pi
.
drw------- 3 root root 4.0K Apr 27 19:25 pi
Wie du erkennst, ist
- Eigentümer = root
- Benutzer = root
und nur diese Beiden (Eigentümer und Gruppe) können lesend und schreibend auf den Ordner pi zugreifen.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Lösung
Du kannst den Befehl auf omv so gestalten, dass rsync auf dem entfernten Server mit root
-Rechten, besser gesagt sudo
nutzen darf.
In der Datei etc/sudoers
ist eine Änderung vornehmen, sodass beim Ausführen eines Befehls mit sudo
KEINE Passwortabfrage erfolgt.
Aus diesem Grund musst du unbedingt eine Public Key
Authentication verwenden!
Die Datei etc/sudoers
ist mit dem speziellen Editor visudo
zu bearbeiten.
sudo visudo
Option 1
Nun kannst du entweder alle Benutzer, die sudo
verwenden dürfen von der Passwortpflicht befreien.
sudo visudo
# Allow members of group sudo to execute any command
#%sudo ALL=(ALL:ALL) ALL
%sudo ALL=(ALL) NOPASSWD:ALL
Option 2
Du legst einen neuen Benutzer speziell für rsync
an und befreist nur diesen einen Benutzer von der Passwortpflicht bei der sudo
-Verwendung für den Prozess /usr/bin/rsync
.
sudo visudo
benutzername ALL= NOPASSWD:/usr/bin/rsync
Nach dieser Ergänzung in der Datei etc/sudoers
kann nur der Benutzer rsync
den sudo
-Befehl ohne Passwort verwenden. Andere Benutzer müssen weiterhin ihr Passwort eingeben.
Einen neuen Benutzer rsyncuser
legst du wie folgt an und vergibst auch alle Rechte:
sudo adduser rsyncuser
sudo usermod -a -G sudo rsyncuser
sudo usermod -a -G sshadmin rsync (Optional, wenn der SSH-Zugriff nur für die Gruppe sshadmin erlaubt ist. Das erfordert eine Anpassung der `sshd_config` auf dem Remote Server und ist bei der Verwendung von `Public Key` dringend zu empfehlen.)
Zum Schluss legst du dir deine rsync
-Aufgabe in omv, wie im Abschnitt 👉 Tasks beschreiben, an.
Die einzige Ergänzung ist bei Extra Options am Ende der Seite.
--rsync-path="sudo rsync"
Fertig! 🥳
Die Sicherung von System- oder geschützten Dateien mit rsync funktioniert.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️