Zum Inhalt

openmediavault und rsync

openmediavault (omv) bringt das mächtige Tool rsync mit, dass sich hervorragend für die Datensicherung und das Kopieren von Dateien eignet.

Wie openmediavault auf einem Raspberry Pi installiert wird, beschreibe ich in diesem Artikel

Möchtest du Daten zwischen omv und einem Server austauschen, dann eignet sich rsync besonders gut.

Der Zugriff von omv auf den entfernten Server erfolgt mithilfe von SSH. Es ist deshalb notwendig, dass der Dienst dort aktiviert und ein Benutzer mit SSH-Rechten eingerichtet ist.

Die Konfiguration auf Seite von omv ist gleich erledigt. Das NAS-System erlaubt dir da keine Änderungen und du musst den festgelegten Prozess folgen.

Auf deinem entfernten Linux-Server dagegen sieht das anders aus. Dort kannst du entweder ein bestehendes Benutzerkonto verwenden, oder ein neues Benutzerkonto nur für rsync anlegen.

Tasks

omv bringt den Service rsync in der Standardinstallation mit. Damit können Daten zwischen verschiedenen omv-Laufwerken und 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.

Hast du z.B. einen Linux-Server, auf den du bereits per SSH zugreifen kann, ist die Einrichtung der rsync-Aufgabe sehr schnell erledigt.

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

openmediavault und rsync pull

Der Pull Job wird wie im Screenshot dargestellt konfiguriert:

omv - rsync-Configuration

Source Server
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 auf diesen Ordner einen Zugriff!

Ganz wichtig❗️

Der Benutzer benötigt auf dem Server einen Zugriff auf den Ordner, den du per rsync übertragen möchtest.

Möchtest du einen Systemordner oder geschützte Daten 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 Weboberfläche aus Sicherheitsgründen nicht angezeigt.

Über die CLI kannst du dir die erstellen Schlüssel anzeigen lassen. omv speichert den öffentlichen und privaten Schlüssel jeweils im Verzeichnis /etc/ssh.

omv - rsync-Configuration

Den öffentlichen Schlüssel musst du kopieren und auf deinem Linux-Server abspeichern.

Melde dich dazu per SSH auf deinem entfernten Server mit deinem benutzername an und kopiere den öffentlichen Schlüssel in die Datei ~/.ssh/authorized_keys.

ssh benutzername@ip-addresse
nano ~/.ssh/authorized_keys

Füge den öffentlichen Schlüssel einfach am Ende der Datei in eine neue Zeile ein und speichere die Änderung ab.

Du kannst auch die Eigentümerschaft und die Zugriffsrechte auf die Datei einschränken, so dass nur noch sudo oder root die Datei ä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

Bei mir gab es ein kleines Problem beim Verbindungsaufbau. omv hat keine Verbindung zu meinem Server hergestellt. Die Verbindung wurde immer abgewiesen.

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 entfernten Server her
  4. Akzeptiere den neuen Fingerprint mit yes
ssh benutzer@ip-address-of-openmediavault

sudo su

ssh benutzer@ip-address

root@openmediavault:/etc/ssh# 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.

Nun sollte der Pull Job von omv aus funktionieren. Du kannst das direkt testen, indem du die rsync-Aufgabe manuell startest.

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

Server

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 an das omv angeschlossene Laufwerke kopieren.

Es gibt zwei Kommandos für das Kopieren:

  • cp
  • rsync

cp ist der bekanntere Befehl zum Kopieren von Dateien. Es gibt jedoch einen Nachteil, es wird kein Kopierfortschritt angezeigt.

Nach der Eingabe des Befehls wird einfach nichts mehr angezeigt, bis alle Daten kopiert wurden. 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 Systemdaten 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 wirst du einen solchen Fehler angezeigt bekommen.

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.

Die Rechte sind wie folgt gesetzt:

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 rsync-Befehl auf der omv zu gestalten, dass rsync auf dem entfernten Server mit root-Rechten, besser gesagt sudo nutzen darf.

In der Datei etc/sudoers musst du eine Änderung vornehmen, so dass beim Ausführen eines Befehls mit sudo KEINE Passwortabfrage erfolgt.

omv führt den Befehl remote auf dem Server aus und du hast keine Möglichkeit der Passworteingabe.

Aus diesem Grund musst du unbedingt eine Public Key Authentication verwenden!

Die Datei kannst du nur mit dem speziellen Editor visudo 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 wie im Abschnitt Tasks beschreiben an.

Die einzige Ergänzung ist bei Extra Options am Ender der Seite. Dort trägst du einfach die Zeile ein und speicherst den Task ab.

--rsync-path="sudo rsync"

omv - rsync-Configuration

Fertig!

Die Sicherung von Systemdaten oder geschützten Dateien via 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