Zum Inhalt

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 <-- Server
  • push ➡️ = 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

openmediavault und rsync pull

Der Pull Job wird wie im Screenshot dargestellt konfiguriert:

omv - rsync-Configuration

Der Source Server ist nach dem Schema einzutragen:

benutzername@ip-address:/home/benutzer/test
  • benutzername = Benutzer auf dem entfernten Server
  • ip-address = IP-Adresse des entfernten Servers
  • /home/benutzer/test = zu synchronisierendes Verzeichnis der benutzername 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.

omv - rsync-Configuration

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

  1. Melde dich mit deinem Benutzer per SSH an omv an
  2. Wechsle zum Benutzer su
  3. Stelle eine SSH-Verbindung zu deinem Raspberry Pi her
  4. 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.

omv - rsync-Configuration

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


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.

omv - rsync-Configuration

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.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

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"

omv - rsync-Configuration

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.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj