Dateifreigaben: Überblick und Voraussetzungen
Restow sichert eine SMB-Freigabe (eine Freigabe eines Windows Servers, von Samba oder eines NAS) oder einen NFS-Export vom Server aus. Es gibt keinen Agenten auf dem Dateiserver: Restow bindet die Freigabe für die Dauer eines Laufs schreibgeschützt ein, liest sie mit restic und schreibt das Ergebnis in ein eigenes Repository. Eine Wiederherstellung kann als ZIP-Download, in einen neuen Ordner, an den ursprünglichen Ort oder in eine andere Freigabe gehen, wobei die NTFS-Berechtigungen zurückgeschrieben werden, soweit das Ziel es erlaubt.
Die Weboberfläche nennt so etwas eine Freigabe (englisch: file share). Sie finden die Funktion unter Server & Clients → Freigaben.
So funktioniert es
Abschnitt betitelt „So funktioniert es“- Ein Backup-Job der Art Freigaben startet einen Lauf nach seinem Zeitplan (oder Sie wählen bei der Freigabe Jetzt sichern).
- Der Mounter (siehe unten) legt ein temporäres Docker-Volume an, das die Freigabe über den Kernel des Docker-Hosts einbindet, und startet aus dem laufenden Restow-Image einen kurzlebigen Runner-Container mit diesem Volume, schreibgeschützt.
- Der Runner geht durch die Freigabe, hält die Berechtigungen jeder Datei und jedes Ordners fest und sichert die Daten mit restic in das eigene Repository der Freigabe,
file-shares/<Freigabe-ID>/im primären Repository des Mandanten. Der Runner erreicht nur die API, über das interne Netzrunnersdes Compose-Projekts, mit einem Zugangsdatum, das nur für diesen einen Lauf gilt und nur Daten hinzufügen darf. - Endet der Lauf, werden Container und Volume entfernt. Das Passwort der Freigabe steht nur so lange in den Optionen des Volumes, wie der Lauf dauert.
Eine Freigabe hinzuzufügen, zu testen, zu durchsuchen, zu sichern oder wiederherzustellen startet die API oder den Worker nie neu. Das ist der Unterschied zu NFS als Backup-Speicher (siehe Mounter und NFS-Speicher) und der Grund, warum Mandanten-Administratoren ihre Freigaben selbst hinzufügen können.
Was ein Sicherungsstand enthält
Abschnitt betitelt „Was ein Sicherungsstand enthält“- Dateien und Ordner mit Größen und Änderungszeiten, wie der Server sie lieferte. Symbolische Links bleiben Links, wo der Server sie zeigt.
- Berechtigungen. Bei SMB der Besitzer, die Gruppe und die Zugriffssteuerungsliste jeder Datei und jedes Ordners (auch die Überwachungseinträge, wenn das Konto sie lesen darf), neben den Daten im selben Sicherungsstand gespeichert. NFSv4- und POSIX-ACLs eines NFS-Exports bleiben ebenfalls erhalten, nach bestem Bemühen. Die Option Berechtigungen sichern ist standardmäßig an.
- Was nicht erhalten bleibt: alternative Datenströme (der Linux-SMB-Client zeigt sie nicht), Zugriffszeiten und ein konsistenter Zustand über Dateien hinweg. Die Dateien werden nacheinander gelesen, während Menschen arbeiten, siehe Fehlerbehebung und Grenzen.
Eine Datei, die exklusiv gesperrt geöffnet ist, sich nicht lesen lässt oder nur als Offline-Platzhalter existiert, wird übersprungen. Der Lauf endet dann Mit Warnungen, und die Dateien stehen mit der Ursache im Lauf. Ein Lauf mit Warnungen ist ein vollständiger Sicherungsstand von allem, was sich lesen ließ.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“Der Mounter
Abschnitt betitelt „Der Mounter“Die Sicherung von Freigaben läuft in Containern, die der Mounter startet. Der Mounter ist ein kleiner Container neben Restow, im Compose-Profil mounts, und er hält den Docker-Socket, was Root-Zugriff auf den Docker-Host bedeutet. Lesen Sie Mounter und NFS-Speicher, bevor Sie ihn starten.
-
Neue Installationen starten ihn standardmäßig. Seit 0.4.0 startet
install.shden Mounter zusammen mit dem Stack.--no-mounter(oder der Alias--without-mounter) lässt ihn aus. Führen Sie das Installationsskript erneut auf einer bestehenden Installation aus, behält es deren Wahl. -
Bestehende Installationen starten ihn einmal. Der Provider-Inhaber wählt Netzlaufwerke einschalten (unter Installation → Standard-Repository & Netzlaufwerke oder im Hinweis auf den Seiten der Freigaben), wenn der optionale Updater läuft. Die Schaltfläche braucht eine frische Anmeldung und steht im Audit-Log. Ohne den Updater führen Sie im Verzeichnis mit
docker-compose.ymlaus:Terminal-Fenster docker compose --profile mounts up -d mounter -
Solange er aus ist, sagen die Seiten der Freigaben das, und geplante Sicherungen von Freigaben warten. Ein Lauf, der nicht starten kann, zeigt die Ursache
share.mounter_unavailable. -
Eine Compose-Datei von 0.4.0 oder neuer. Eine Installation, die von 0.3.6 aktualisiert wurde, behält ihre alte
docker-compose.yml, die kein Netzrunnershat. Der Mounter meldet dannrunner_network_missing, und Läufe für Freigaben können nicht starten. Führen Sie dasinstall.shvon 0.4.0 oder neuer erneut im Installationsverzeichnis aus, siehe Erneut ausführen.
Der Docker-Host
Abschnitt betitelt „Der Docker-Host“Der Docker-Daemon bindet die Freigabe mit dem Kernel des Docker-Hosts ein, nicht mit Werkzeugen in einem Container.
| Protokoll | Was der Host-Kernel braucht | Fehlt es |
|---|---|---|
| SMB | Das Modul cifs: modprobe cifs. Bei Ubuntu-Cloud-Kerneln steckt es im Paket linux-modules-extra-$(uname -r). |
Der Test scheitert mit share.client_missing. |
| NFS | Der NFS-Client: nfs-common (Debian, Ubuntu) oder nfs-utils (RHEL-Familie). |
Dieselbe Ursache, share.client_missing. |
Sorgen Sie dafür, dass das Modul beim Start geladen wird (zum Beispiel mit einer Datei in /etc/modules-load.d/), damit ein Neustart die Sicherungen nicht stoppt. Auch auf einem arm64-Host braucht der Kernel das Modul cifs.
SELinux. Auf einem Host mit SELinux im Enforcing-Modus kann ein Container einen cifs- oder nfs-Mount nur mit einer Option context= lesen. Der Mounter ergänzt sie, wenn seine Umgebung RESTOW_MOUNTER_SELINUX_CONTEXT=true hat (Standard ist false). Der Dienst mounter der docker-compose.yml des Releases reicht nur eine feste Liste von Variablen durch, eine Zeile allein in der .env erreicht ihn also nicht: Tragen Sie die Variable beim Dienst mounter in docker-compose.override.yml ein und erstellen Sie den Mounter dann neu.
services: mounter: environment: RESTOW_MOUNTER_SELINUX_CONTEXT: "true"docker compose --profile mounts up -d mounterDas wurde nicht auf einem Host mit SELinux im Enforcing-Modus getestet. Das Anzeichen ist ein Test, der einbindet und dann „Permission denied“ meldet.
Netzwerk und Ports
Abschnitt betitelt „Netzwerk und Ports“Der Docker-Host, nicht ein Container, muss den Dateiserver erreichen:
| Protokoll | Ports vom Docker-Host zum Dateiserver |
|---|---|
| SMB | TCP 445 |
| NFS | TCP 2049. NFSv3 braucht zusätzlich den Portmapper (111) und den Mount-Daemon. |
Die Runner haben neben dem internen Netz runners zur API kein eigenes Netz: Sie erreichen weder die Datenbank noch das Internet noch den Dateiserver direkt. Die übrigen Ports von Restow stehen unter Netzwerk und Ports.
Einen Dateiserver mit privater oder Loopback-Adresse (die meisten haben eine) fügt ein Provider-Administrator jederzeit hinzu. Ein Mandanten-Administrator braucht die Genehmigung der Freigabe durch einen Provider-Administrator oder einen Schalter der Installation, siehe Budgets, Netzwerke und Runner.
Das SMB-Konto
Abschnitt betitelt „Das SMB-Konto“Restow meldet sich mit einem Konto und einem Passwort an. Ein Domänenkonto und ein lokales Konto des Dateiservers funktionieren beide.
- Lesezugriff auf alles, was gesichert werden soll. Am besten ein Mitglied der Sicherungs-Operatoren (Windows, englisch Backup Operators) oder ein Konto mit
SeBackupPrivilege(Samba:sec privileges). Ein solches Konto liest Dateien, deren Zugriffssteuerungsliste es sonst aussperren würde, und kann ihre Berechtigungen lesen. - Für Wiederherstellungen in die Freigabe: Schreibzugriff. Um auch die Berechtigungen zurückzuschreiben, braucht es zusätzlich
SeRestorePrivilege(Besitzer) undSeSecurityPrivilege(Überwachungseinträge). Ohne sie schreibt eine Wiederherstellung trotzdem den Inhalt, und der Lauf endet mit der Warnungshare.acl_partial. - SMB-Versionen: 2.1 bis 3.1.1. Der Dialog bietet 3.1.1 (empfohlen), 3.0 und 2.1 („veraltet, ohne Verschlüsselung“) an. SMB 1 und NTLMv1 werden abgelehnt. Kerberos wird nicht unterstützt: Das Konto meldet sich mit NTLMv2 an.
- Verschlüsselung (Verbindung verschlüsseln) braucht SMB 3. Sie ist standardmäßig aus, weil viele NAS-Geräte damit langsam sind. Schalten Sie sie ein, wenn der Verkehr Ihr eigenes Netz verlässt.
NFS-Exporte
Abschnitt betitelt „NFS-Exporte“- Der Export muss die Adresse des Docker-Hosts zulassen.
root_squash(der Standard) lässt den Runner alsnobodylesen. Dateien, die nur root lesen darf, werden dann mit einer Warnung übersprungen. Für eine vollständige Sicherung exportieren Sie mitno_root_squashoder machen die Dateien lesbar.- Versionen 3, 4, 4.1 und 4.2. Die Anmeldung erfolgt über den Host (AUTH_SYS), wie bei NFS-Speicher.
Wer sie nutzen kann
Abschnitt betitelt „Wer sie nutzen kann“Die Seiten der Freigaben sind für Mandanten-Administratoren, die die Freigaben ihres eigenen Mandanten verwalten, und für Provider-Administratoren, die in einem Mandanten arbeiten. Wie bei Rechnern sieht ein Mitglied des Provider-Teams mit der Rolle „Nur lesen“, dass Sicherungen stattfanden, kann aber ihre Inhalte weder durchsuchen noch wiederherstellen. Nutzer eines Mandanten und Restore-Operatoren haben in 0.4.7 keine Seiten für Freigaben: Für sie gibt es keine Selbstbedienungs-Wiederherstellung von Freigaben. Budgets und die Genehmigung privater Netze sind Provider-Administratoren vorbehalten.
Wo Freigaben auftauchen
Abschnitt betitelt „Wo Freigaben auftauchen“Eine Freigabe in einem aktiven Backup-Job gilt als geschützt und wird neben Postfächern, Rechnern und VMs gezählt:
- Tab Status und Startseite. Die letzte erfolgreiche Sicherung vom Typ Freigaben, die Zahl der geschützten Objekte (davon Freigaben) und der Hinweis „N Freigaben in keinem Backup-Job“ mit Freigaben öffnen.
- Wiederherstellbarkeit. Eine Zeile je Freigabe, bewertet nach der Restore-Prüfung ihres neuesten Sicherungsstands, siehe Wiederherstellen und Restore-Prüfung und Wiederherstellbarkeit.
- Warnungen. Eine Sicherung, die mit Warnungen endete, steht auf der Seite Warnungen und lässt sich wie jede andere bestätigen.
- Verlauf und Statistik. Sicherungs-, Wiederherstellungs- und Kopierläufe erscheinen im Verlauf, mit der Freigabe verknüpft. Die Statistik zählt die Wiederherstellbarkeit, die Ergebnisse der Sicherungen, die Wiederherstellungen und die hinzugekommenen Daten. Ein Kopierlauf zählt als Wiederherstellung, nie als Schutz.
- Provider-Ansicht. Sie meldet
fileShares,fileSharesWithoutJobundfileSharesFailed, mit den Hinweisenfile_share_backup_failedundfile_shares_without_job.
Benachrichtigungen und API
Abschnitt betitelt „Benachrichtigungen und API“- Ereignisse. Ein fehlgeschlagener Lauf löst Sicherung fehlgeschlagen aus (auch bei einem abgelehnten Passwort, damit ein geändertes Passwort noch in derselben Nacht jemanden erreicht), eine Freigabe ohne erfolgreiche Sicherung löst Sicherung überfällig (
backup.overdue) aus, Wiederherstellungen lösen Wiederherstellung fehlgeschlagen und Wiederherstellung abgeschlossen aus, Restore-Prüfungen die Ereignisse der Restore-Prüfung. Zwei Ereignisse gehören nur zu Freigaben: Speicherbudget der Freigaben (file_share.storage_quota) und Sicherungsdaten einer Freigabe bleiben gesperrt (file_share.repository_locked). Wohin sie gehen, legen Sie in der Benachrichtigungsmatrix fest, siehe Benachrichtigungen und Berichte. - Geplante Berichte haben in 0.4.7 keinen eigenen Block für Freigaben. Die Release Notes von 0.4.0 nennen das als bekanntes Problem. Freigaben gehen in die Zahlen der Statistik ein, die ein Bericht nennt, etwa die Erfolgsquote der Sicherungen und den Anteil als wiederherstellbar nachgewiesener Objekte.
- API.
GET /api/v1/statusenthältfileShares(die Zahlen der Freigaben) und in der Zusammenfassung zur WiederherstellbarkeitsharesWithoutJob. Das kam mit dem Vertrag 1.4.0 der Integrations-API und ist rein additiv. Siehe Integrations-API.