17 KiB
NetMover – Anleitung
NetMover holt Dateien regelmäßig aus einem Ordner und bringt sie sicher in einen anderen. Typisch: Scans landen auf dem NAS, NetMover schiebt sie alle 30 Sekunden in den Eingangsordner von Paperless.
Diese Anleitung erklärt die Bedienung. Installation, Updates und technische Details stehen im README.
Inhalt: Begriffe · Erste Anmeldung · Anbindungen · Schlüssel · Regeln · Probelauf · Status · Protokoll · Einstellungen · Uptime Kuma · Beispiele · Häufige Fragen
Die vier Begriffe
| Begriff | Was es ist | Beispiel |
|---|---|---|
| Anbindung | Ein Ort, an den NetMover herankommt: eine SMB-Freigabe, ein NFS-Export oder ein Server per SFTP | „NAS“ = //10.0.10.6/Scans |
| Schlüssel | Ein gespeicherter SSH-Schlüssel für SFTP-Anbindungen | „paperless-lxc“ |
| Regel | „Alle N Sekunden aus Anbindung A nach Anbindung B“ – mit Filter, Sicherheitsprüfungen und Verhalten bei gleichen Namen | „Scans → Paperless“ |
| Lauf | Eine Ausführung einer Regel; steht mit allen Dateien im Protokoll | 23:41:07, 3 Dateien verschoben |
Die Reihenfolge beim Einrichten ist immer dieselbe – und so ist auch das Menü aufgebaut: Anbindungen → (Schlüssel) → Regeln → Status und Protokoll beobachten.
Erste Anmeldung
Beim allerersten Aufruf verlangt NetMover ein Administratorpasswort (mindestens 10 Zeichen) und einen Einrichtungscode. Der Code steht im Log des Dienstes:
journalctl -u netmover | grep setup.required
Der Code verhindert, dass jemand anderes im Netz zuerst die Seite öffnet und das Passwort festlegt. Passwort ändern: System → Einstellungen.
Anbindungen
Verbindungen → Anbindungen → Neue Anbindung
Typ wählen
| Typ | Wofür | Kann |
|---|---|---|
| SMB/CIFS | Windows-Freigaben, Synology, QNAP, … | Quelle und Ziel |
| NFS 4 / NFS 3 | Linux-Server, NAS mit NFS | Quelle und Ziel |
| SFTP | Server, die nur per SSH erreichbar sind (z. B. ein LXC mit Paperless) | nur Ziel |
SMB- und NFS-Anbindungen werden eingehängt und erscheinen unter
/mnt/netmover/<name>. SFTP wird nicht eingehängt, NetMover verbindet sich bei
jedem Lauf.
Felder
| Feld | Bedeutung |
|---|---|
| Name | Frei wählbar. Bestimmt auch das Verzeichnis unter /mnt/netmover (wird beim Anlegen festgelegt). |
| Server | IP-Adresse oder Hostname, z. B. 10.0.10.6 |
| Freigabe / Pfad | SMB: Freigabename, optional mit Unterordner (Scans oder Scans/privat). NFS: Exportpfad (/volume1/scans). SFTP: absoluter Ordner auf dem Server (/opt/paperless_data/consume). |
| Benutzername / Passwort | Bei SMB leer lassen für Gastzugang. Beim Bearbeiten heißt ein leeres Passwortfeld „unverändert“ – Passwörter werden nie angezeigt. |
| Anmeldeart, Schlüssel (SFTP) | SSH-Schlüssel (gespeichert oder nur für diese Anbindung) oder Passwort, siehe Schlüssel. |
| uid, gid, file_mode, dir_mode (SMB) | Wem die Dateien im eingehängten Ordner gehören. Meist leer lassen. |
| Zusatzoptionen | Für Sonderfälle, z. B. vers=3.0 oder nohandlecache. Nur erlaubte Optionen; Zugangsdaten setzt NetMover selbst. |
| Beim Start automatisch einhängen | Nach einem Neustart des Servers wieder einhängen. Fällt das NAS aus, versucht NetMover es außerdem jede Minute erneut. |
| Aktiv | Deaktivierte Anbindungen werden von Regeln nicht benutzt. |
Testen
Testen prüft drei Dinge einzeln und sagt im Klartext, was nicht klappt:
- Einhängen bzw. Verbinden (SFTP)
- Lesen – Inhalt des Ordners auflisten
- Schreiben – Testdatei anlegen, Eigentümer prüfen, wieder löschen
Daraus folgt, wofür die Anbindung taugt: nur Quelle, kopieren (nur lesen), Quelle mit Löschen (lesen und löschen – nötig zum Verschieben) oder Ziel. Man kann schon im Formular testen, bevor man speichert.
Bei SFTP hält der erste erfolgreiche Test den Hostschlüssel des Servers fest. Den
angezeigten Fingerabdruck einmal auf dem Server vergleichen:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Ändert er sich später,
verweigert NetMover die Verbindung (Schutz gegen untergeschobene Server). Wurde der
Server neu aufgesetzt: bei der Anbindung Hostschlüssel zurücksetzen und neu testen.
Zustände
| Anzeige | Bedeutung |
|---|---|
| eingehängt / erreichbar | alles gut |
| ausgehängt / nicht geprüft | nicht in Benutzung |
| gestört | Antwortet nicht oder meldet „Stale file handle“; NetMover hängt gerade neu ein |
| Fehler | Wiederherstellung gescheitert; NetMover versucht es jede Minute weiter (bei „automatisch einhängen“) |
Regeln, deren Anbindung nicht verfügbar ist, brechen ab, ohne etwas anzufassen. Es wird nie in ein leeres Verzeichnis geschrieben, nur weil die Freigabe fehlt.
Schlüssel
Verbindungen → Schlüssel
Für SFTP-Ziele ist ein SSH-Schlüssel sicherer als ein Passwort. Einen Schlüssel kann man für mehrere Anbindungen verwenden; den Benutzernamen legt jede Anbindung fest.
Neuen Schlüssel erzeugen – Namen eingeben, Ed25519-Schlüssel erzeugen. Dann:
- Bei dem Schlüssel Öffentlicher Schlüssel / authorized_keys aufklappen und die
authorized_keys-Zeile kopieren. Sie beginnt mit
restrict,command="/usr/lib/openssh/sftp-server"– damit darf der Schlüssel nur SFTP, keine Shell. - Auf dem Zielserver an die Datei
~/.ssh/authorized_keysdes Benutzers anhängen (Ordner~/.sshmit Rechten700, Datei600, Eigentümer der Benutzer). - In der Anbindung Anmeldeart: SSH-Schlüssel und den Schlüssel wählen, Testen.
Vorhandenen Schlüssel importieren – privaten Schlüssel einfügen (OpenSSH- oder PEM-Format; Ed25519, ECDSA oder RSA ab 2048 Bit). Hat er eine Passphrase, diese angeben: Sie wird nur zum Entschlüsseln benutzt, der Schlüssel liegt danach verschlüsselt in NetMovers Datenbank.
Private Schlüssel zeigt NetMover nie an. Ein Schlüssel lässt sich nur löschen, wenn ihn keine Anbindung mehr nutzt.
Regeln
Automatisierung → Regeln → Neue Regel
Quelle und Ziel
| Feld | Bedeutung |
|---|---|
| Quelle: Anbindung, Unterordner | Woher. Unterordner relativ zur Freigabe; leer = Wurzel der Freigabe. |
| Filter | Glob: Dateiname, Groß/klein egal, mehrere mit ; (*.pdf;*.jpg). Regulärer Ausdruck: gegen den relativen Pfad (^rechnungen/.*\.pdf$). |
| Unterordner einbeziehen | Auch in Unterordnern suchen; die Ordnerstruktur bleibt im Ziel erhalten. |
| Ziel | Eine Anbindung mit Zielordner (wird angelegt) oder ein lokaler Pfad auf dem NetMover-Server (muss existieren). |
| Aktion | verschieben (Quelle wird nach erfolgreicher Übertragung gelöscht) oder kopieren (Quelle bleibt; jede Dateiversion wird nur einmal kopiert). |
| Wenn Datei existiert | umbenennen (scan.pdf → scan-1.pdf, scan-2.pdf …), überspringen oder überschreiben. |
Sicherheit und Grenzen
| Feld | Bedeutung | Empfehlung |
|---|---|---|
| Intervall | Wie oft geprüft wird (mind. 10 s) | 30 s |
| Stabilitätsfenster | Größe und Änderungszeit müssen so lange gleich bleiben. Schützt vor halb geschriebenen Scans. | 5 s, bei langsamen Scannern mehr |
| Mindestalter | Dateien erst ab diesem Alter anfassen | 0 |
| Max. Größe | Größere Dateien überspringen | leer |
| Zeitlimit ohne Fortschritt | Bricht einen Lauf ab, der hängt (z. B. NFS-Server weg). Große Dateien, die stetig übertragen werden, sind nicht betroffen. | 120 s |
Immer ignoriert werden versteckte Dateien (.datei), unfertige Übertragungen
(.part, .tmp, .crdownload, .filepart, .!ut), Verknüpfungen und
Synology-Verwaltungsordner (@eaDir, #recycle).
Rechte und Quarantäne
| Feld | Bedeutung |
|---|---|
| Eigentümer setzen | uid:gid, z. B. 1000:1000. Auf SMB-Zielen wirkungslos (dort bestimmen die Mount-Optionen den Eigentümer), auf NFS nur ohne Root-Squash. |
| Modus setzen | z. B. 0644; leer = wie die Quelldatei |
| Quarantäneordner | Dateien, die mehrmals hintereinander scheitern, werden dorthin verschoben (relativ zur Quell-Anbindung), statt es endlos zu versuchen. Leer = keine Quarantäne. |
Probelauf
Probelauf zeigt in einer Tabelle, welche Datei wohin ginge – ohne etwas zu verändern. Vor dem ersten Aktivieren einer Regel immer einmal machen.
Das Häkchen Nur Probelauf in der Regel lässt sie regelmäßig laufen, ohne etwas zu verändern – gut zum Beobachten über ein paar Tage.
Wie verschoben wird
Für jede Datei:
- zweimal messen (Abstand = Stabilitätsfenster) – nur unveränderte Dateien weiter,
- freien Platz am Ziel prüfen (Größe + 5 %),
- unter einem versteckten Namen
.netmover-….partins Ziel schreiben und auf die Platte zwingen, - prüfen, dass sich die Quelle in der Zwischenzeit nicht verändert hat,
- in einem Schritt auf den Endnamen umbenennen – ohne etwas zu überschreiben,
- erst dann die Quelle löschen.
Geht unterwegs etwas schief, bleibt die Quelle liegen und im Ziel steht nichts Halbes. Ein Programm, das den Zielordner überwacht (Paperless), sieht nie eine unfertige Datei.
Status
Übersicht → Status ist die Startseite und aktualisiert sich alle 15 Sekunden.
- Ampel oben links: grün = alles in Ordnung, rot = mindestens ein Problem.
- Anbindungen mit Zustand, Füllstand und letztem Fehler.
- Regeln mit letztem Ergebnis, letztem Erfolg und nächstem Lauf.
Eine Regel wird gelb, wenn ihr letzter erfolgreicher Lauf länger als das Dreifache ihres Intervalls zurückliegt. So fällt auf, wenn NetMover still ausfällt – statt dass es aussieht, als gäbe es nichts zu tun.
Protokoll
Automatisierung → Protokoll zeigt jeden Lauf: Zeitpunkt, Dauer, gesehen / übertragen / übersprungen / Fehler. Einzeldateien aufklappen zeigt jede Datei mit Ziel und Ergebnis. Leere Läufe sind ausgeblendet („auch leere Läufe“ zeigt sie).
Häufige Einträge:
| Eintrag | Bedeutung |
|---|---|
| wird noch geschrieben | Datei ändert sich noch – im nächsten Lauf erneut |
| Datei ist gerade in Benutzung | Ein anderes Programm hält sie gesperrt |
| existiert bereits im Ziel | Regel steht auf „überspringen“ |
| Quelle hat sich während der Übertragung geändert | Abgebrochen, nichts gelöscht; nächster Lauf versucht es erneut |
| n bereits übertragen | Kopiermodus: diese Dateiversionen sind schon kopiert |
| Termin übersprungen – voriger Lauf läuft noch | Ein Lauf dauert länger als das Intervall |
| nicht eingehängt – Lauf abgebrochen, nichts angefasst | Anbindung fehlt; siehe Zustände |
Protokolle werden nach der eingestellten Frist gelöscht (Standard 30 Tage).
Einstellungen
System → Einstellungen
Benachrichtigungen
NetMover kann bei Fehlern eine Nachricht an einen Webhook schicken – z. B. an ntfy, Gotify oder Home Assistant.
| Feld | Bedeutung |
|---|---|
| Benachrichtigen | nie / bei jedem fehlgeschlagenen Lauf / erst nach N Fehlschlägen in Folge |
| Webhook-URL | Adresse des Empfängers. Wird nur gekürzt angezeigt, weil sie oft ein Token enthält. |
| Content-Type, Vorlage | Format der Nachricht; Platzhalter $title, $message, $rule, $event, $time, $host |
| Entwarnung | Nachricht, wenn eine Regel oder Anbindung wieder funktioniert |
Beispiele: ntfy → URL https://ntfy.sh/<thema>, Content-Type text/plain, Vorlage
$title: $message. Gotify → URL https://gotify.lan/message?token=…, Content-Type
application/json, Vorlage {"title": "$title", "message": "$message"}.
Test senden prüft die gespeicherten Einstellungen.
Überwachung mit Uptime Kuma
Zwei Wege, die sich gut ergänzen:
1. Push (empfohlen) – NetMover meldet sich jede Minute bei Kuma.
- In Kuma Neuer Monitor → Typ „Push“, Heartbeat-Intervall 60 s. Kuma zeigt eine
Push-URL wie
https://kuma.lan/api/push/AbCdEf?status=up&msg=OK&ping=. - In NetMover System → Einstellungen → Überwachung die URL eintragen, speichern, Push jetzt testen.
NetMover meldet „up“ oder „down“ samt Problembeschreibung. Bleibt die Meldung ganz aus – Dienst oder VM steht –, schlägt Kuma von selbst Alarm. Funktioniert auch, wenn Kuma NetMover nicht erreichen kann.
2. HTTP-Monitor – Kuma fragt NetMover ab. Antwort 200 = in Ordnung, 503 = Problem; ohne Anmeldung erreichbar.
| Adresse | Prüft |
|---|---|
http://<netmover>:8080/healthz |
alles: Scheduler, alle aktiven Anbindungen und Regeln |
http://<netmover>:8080/healthz/mount/<name> |
eine Anbindung (Name wie im Verzeichnis unter /mnt/netmover, z. B. nas) |
http://<netmover>:8080/healthz/rule/<nummer> |
eine Regel |
Die fertigen Adressen stehen unter Einstellungen → Überwachung → Adressen für
HTTP-Monitore. Mit einem Monitor pro Anbindung und Regel sieht man in Kuma sofort,
was gestört ist. /healthz liefert außerdem JSON mit allen Einzelprüfungen
(Kuma-Typ „HTTP(s) – JSON-Abfrage“, Ausdruck status, erwarteter Wert ok).
Als Problem gilt: Scheduler steht, eine aktive Anbindung ist im Fehlerzustand, eine aktive Regel hatte länger als das Dreifache ihres Intervalls keinen Erfolg oder ist dreimal hintereinander gescheitert.
Export und Import
Konfiguration exportieren lädt Anbindungen, Regeln und Einstellungen als JSON herunter – ohne Passwörter, Schlüssel, Benutzernamen und Webhook-URL. Beim Import werden vorhandene Namen übersprungen; importierte Regeln sind zunächst deaktiviert, Zugangsdaten müssen neu eingegeben werden.
Typische Einrichtungen
Scanner → NAS → Paperless
- Anbindung NAS (SMB, Freigabe
Scans), testen, einhängen. - Schlüssel paperless-lxc erzeugen, Zeile in
authorized_keysim Paperless-LXC eintragen. - Anbindung Paperless (SFTP, Pfad
/opt/paperless_data/consume, Schlüssel wählen, Benutzer = der Paperless-Benutzer), testen. - Regel Scans → Paperless: Quelle NAS, Filter
*.pdf, Ziel Paperless, verschieben, umbenennen, 30 s. Probelauf, dann aktivieren.
Jede Person in einen eigenen Ordner
Scannt jede Person in einen eigenen Unterordner (Scans/max, Scans/erika): pro
Person eine Regel mit eigenem Unterordner in der Quelle und eigenem Ziel.
Kopie als zusätzliche Sicherung
Regel mit Aktion kopieren, Ziel z. B. ein zweites NAS, Intervall 3600 s. Jede Dateiversion wird genau einmal kopiert; ändert sich eine Datei, wird die neue Version nach der Kollisionsregel abgelegt.
Häufige Fragen
Eine Datei wird nicht verschoben. – Im Protokoll der Regel (auch leere Läufe anzeigen) steht der Grund. Häufig: Filter passt nicht (Groß/klein ist bei Glob egal, bei regulären Ausdrücken nicht), Datei wird noch geschrieben oder ist größer als „Max. Größe“.
Die Anbindung zeigt „Fehler“. – Die Meldung darunter nennt die Ursache und meist die Abhilfe. Ist das NAS nur neu gestartet, hängt NetMover die Freigabe innerhalb einer Minute selbst wieder ein.
„mount error(95): Operation not supported“ – NAS und NetMover finden keine
gemeinsame SMB-Version. Am NAS das maximale SMB-Protokoll auf SMB3 stellen
(Synology: Systemsteuerung → Dateidienste → SMB → Erweiterte Einstellungen) oder
Zusatzoption vers=2.0.
„Root-Squash“ beim Testen einer NFS-Anbindung – Der NFS-Server behandelt NetMover wie einen Gast. Lesen und Schreiben gehen oft trotzdem, aber „Eigentümer setzen“ nicht. Abhilfe am NAS in der NFS-Regel: Squash → Keine Zuordnung.
Kann NetMover Dateien verlieren? – Die Quelle wird erst gelöscht, wenn die Datei vollständig und unter ihrem Endnamen im Ziel liegt. Fehlt eine Anbindung, wird nichts angefasst. Einzig „überschreiben“ als Kollisionsregel ersetzt bewusst Dateien im Ziel.
Wie aktualisiere ich NetMover? – Auf dem Server netmover-update. Vorher wird
automatisch gesichert. Details im README.
Passwort vergessen? – Auf dem Server /opt/netmover/venv/bin/netmover reset-password, Dienst neu starten, Einrichtung mit neuem Code aus dem Log.



