BackmeUp ist eine Android-App, die einen oder mehrere frei wählbare Ordner deines Handys zeitgesteuert auf deine Synology (oder einen anderen Server) sichert – automatisch, im Hintergrund, nach Zeitplan.
Hinweis: Dieses Handbuch ist auch direkt in der App über den Knopf "📖" auf dem Start- bzw. Job-Bearbeiten-Bildschirm erreichbar (seit Version 2.1) – ohne dass diese Datei separat geöffnet werden muss.
BackmeUp_v3.7.apk.
Sie ist die eigentliche Startfassung – so, wie bei einem Windows-Programm die fertige
.exe. Android Studio und das Quellcode-Projekt braucht nur, wer etwas
ändern oder eine neue Version bauen will.
Weg A – fertige App installieren (empfohlen):
BackmeUp_v3.7.apk auf das Handy übertragen (USB-Kabel, Cloud-Ordner oder
an sich selbst senden).Weg B – Projekt selbst öffnen und bauen (nur nötig, um den Quellcode zu ändern oder eine eigene APK zu erzeugen):
BackmeUp_v3.7 auswählen.Seit Version 2.0 gibt es nicht mehr nur eine einzige Konfiguration, sondern beliebig viele Jobs. Ein Job ist eine vollständig eigenständige Sicherung: eigene Ordner, eigener Server, eigener Zeitplan, eigener Ein/Aus-Schalter. Beispiel: Job "Fotos → Synology" läuft täglich um 22 Uhr per SFTP, gleichzeitig läuft Job "Dokumente → PC" alle 6 Stunden per SMB – unabhängig voneinander.
Startbildschirm (Job-Übersicht): zeigt alle angelegten Jobs mit letztem Sicherungsstatus. Pro Job: Ein/Aus-Schalter für die automatische Sicherung, "Bearbeiten", "Jetzt sichern", "Löschen". Über "+ Neuer Job" wird ein weiterer Job angelegt. Während eine Sicherung läuft, wird "Jetzt sichern" durch "Abbrechen" ersetzt, damit sich der Vorgang jederzeit gezielt stoppen lässt.
Job bearbeiten/anlegen (gleicher Bildschirm für neu und bestehend):
22:00 oder
22:00, 06:00) oder ein Stundenintervall (z. B. alle 6 Stunden) wählen, dann
den Schalter "Automatische Sicherung aktiv" einschalten.Fortschritt während der Sicherung (seit Version 2.1): Solange ein Job läuft, zeigt die Job-Übersicht direkt "läuft: X von Y Dateien" an, zusätzlich erscheint eine Benachrichtigung mit Fortschrittsbalken. Nach Abschluss steht in der Übersicht z. B. "128 von 128 Dateien gesichert" oder, falls einzelne Dateien fehlgeschlagen sind, "120 von 128 Dateien gesichert, 8 Fehler" mit einer Beispiel-Fehlermeldung. Seit Version 2.1 bricht ein einzelner fehlerhafter Ordner oder eine einzelne fehlerhafte Datei nicht mehr die gesamte Sicherung ab – alle anderen Dateien werden trotzdem weiter gesichert, und am Ende steht klar, wie viele Dateien wirklich übertragen wurden. Ausserdem verhindert die App jetzt, dass derselbe Job versehentlich zweimal gleichzeitig läuft (z. B. durch doppeltes Drücken von "Jetzt sichern").
Ein Sicherungs-Job darf beliebig viele Ordner enthalten. Auf dem Server entsteht für jeden davon ein Unterordner mit seinem Namen. Zwei Punkte, die dabei seit Version 3.6 abgesichert sind:
Gleiche Ordnernamen. Der häufigste Fall ist ein Ordner „Download" im
internen Speicher und ein „Download" auf der SD-Karte. Bis Version 3.5 landeten beide
im selben Serverordner: gleichnamige Dateien haben sich dort gegenseitig überschrieben, und der
Änderungsabgleich übertrug bei jedem Lauf erneut, weil beide Dateien um denselben Eintrag
stritten. Beides blieb unbemerkt, weil die Sicherung „erfolgreich" meldete. Ab Version 3.6
bekommt der zweite Ordner automatisch den Zusatz (2), der dritte (3)
und so weiter. In der Ordnerliste des Jobs steht der Zielname direkt dabei
(„Download → wird gesichert als „Download (2)""), und das Protokoll vermerkt die Umbenennung.
Die Zuordnung hängt an der Reihenfolge der Ordnerliste und bleibt deshalb über alle Läufe
gleich.
Ineinander liegende Ordner. Wird ein Ordner ausgewählt, der bereits in einem anderen ausgewählten Ordner liegt (oder umgekehrt), lehnt BackmeUp die Auswahl jetzt mit einem Hinweis ab. Sonst würde derselbe Inhalt bei jedem Lauf zweimal übertragen und an zwei verschiedenen Stellen auf dem Server liegen – doppelte Zeit, doppelter Speicherplatz, kein einziger zusätzlich gesicherter Inhalt.
Nicht lesbare Ordner. Ist ein Ordner beim Sicherungslauf nicht erreichbar (SD-Karte entfernt, Berechtigung entzogen), wurde er früher stillschweigend übersprungen – die Sicherung meldete danach Erfolg, obwohl ein ganzer Ordner fehlte. Ab Version 3.6 nennt der Status ihn ausdrücklich, und der Lauf gilt nicht als erfolgreich.
Ganz unten auf dem Startbildschirm steht unter „Einstellungen sichern" ein Knopfpaar, mit dem sich der gesamte Bestand an Jobs und Hol-Zugängen in eine Datei schreiben und von dort wiederherstellen lässt (neu in Version 3.7). Das ist der Weg für einen Gerätewechsel, vor einer Neuinstallation oder um einen Zugang auf ein zweites Gerät zu übernehmen.
Beim Sichern stehen zwei Möglichkeiten zur Wahl:
Was es bewusst nicht gibt, ist die dritte Kombination: unverschlüsselt mit Passwörtern. Eine solche Datei landet erfahrungsgemäß im Downloads-Ordner, in einem Cloud-Speicher oder in einem Mail-Anhang — Zugangsdaten zum eigenen NAS haben dort nichts verloren, und auf dem Gerät selbst liegen sie aus demselben Grund verschlüsselt.
Beim Einspielen wird die Datei ausgewählt; ob ein Kennwort nötig ist, erkennt BackmeUp an der Datei selbst. Ein Job mit bekannter Kennung ersetzt den vorhandenen, alle übrigen kommen hinzu — eine Sicherung lässt sich also auch dazu verwenden, einzelne Zugänge auf ein zweites Gerät zu übernehmen. Aktivierte Zeitpläne werden anschließend automatisch wieder eingerichtet.
| Protokoll | Empfehlung | Auf der Synology aktivieren |
|---|---|---|
| SFTP | Empfohlen – am zuverlässigsten und sicher, funktioniert im WLAN und über Internet. | DSM → Systemsteuerung → Terminal & SNMP → "SSH-Dienst aktivieren" |
| WebDAV | Gute Alternative, ebenfalls verschlüsselt (HTTPS). | Paketzentrum → "WebDAV Server" installieren, dort HTTPS-Port notieren (Standard 5006) |
| FTP/FTPS | Einfach einzurichten; reines FTP ist unverschlüsselt – nur im vertrauenswürdigen Heimnetz verwenden. | DSM → Systemsteuerung → Datei-Dienste → FTP aktivieren |
| SMB (Windows-Freigabe) | Gut für reinen Betrieb im Heimnetz; im Hintergrundbetrieb über Mobilfunk/Internet weniger zuverlässig. | DSM → Systemsteuerung → Datei-Dienste → SMB aktivieren, Freigabe anlegen |
/volume1/13TB, nicht unter /13TB. Wird der falsche Pfad eingetragen,
schlägt das Anlegen des Zielordners fehl und es wird keine einzige Datei gesichert.
Am sichersten: den Button "🔍 Zielordner auf Server suchen" verwenden – der zeigt
die tatsächliche Ordnerstruktur, wie sie das gewählte Protokoll sieht, zum Durchklicken an,
statt den Pfad raten zu müssen.
Beispiel-Zielordner je Ziel-System:
| Ziel | Protokoll | Beispiel Zielordner-Feld | Hinweis |
|---|---|---|---|
| Synology NAS | SFTP | /volume1/13TB/Handy-Backup |
Immer mit führendem / - absoluter Pfad ab Volume-Wurzel. |
| Synology NAS | WebDAV | /Handy-Backup |
Pfad relativ zur freigegebenen WebDAV-Wurzel (meist die Freigabe selbst). |
| Windows-PC | SFTP (OpenSSH-Server) | BackmeUp |
Ohne führenden / - der Pfad ist relativ zum
Windows-Benutzerordner (z. B. C:\Users\Name\BackmeUp). Mit
führendem / funktioniert es bei Windows-OpenSSH i. d. R. nicht.
Der SSH-Server muss auf dem Ziel-PC zuerst installiert und eingerichtet werden –
Anleitung für Windows, Linux und macOS dazu in Abschnitt 4f. |
| Windows-PC | SMB (Windows-Freigabe) | / oder z. B. /Fotos |
Freigabename kommt ins separate Feld "Freigabename", der Zielordner-Pfad ist relativ
zur Freigabe-Wurzel - mit oder ohne führenden / funktioniert hier beides. |
| Linux-PC | SFTP (OpenSSH-Server) | BackmeUp |
Ohne führenden / - der Pfad ist relativ zum
Home-Verzeichnis des Anmeldebenutzers (z. B. /home/name/BackmeUp). Mit
führendem / ist der Pfad absolut ab der Dateisystem-Wurzel gemeint - dort
fehlen dem Benutzer meist die Schreibrechte. Einrichtung: Abschnitt 4f. |
| Mac | SFTP (Remote Login/SSH) | BackmeUp |
Ohne führenden / - der Pfad ist relativ zum
Benutzerordner (z. B. /Users/name/BackmeUp). Einrichtung: Abschnitt 4f. |
Unterordner werden immer automatisch mitgesichert – die App durchläuft jeden ausgewählten Ordner rekursiv inklusive aller Unterordner. Dafür ist keine gesonderte Einstellung nötig oder vorhanden.
Seit Version 2.6 überträgt BackmeUp standardmäßig nur noch Dateien, die neu sind oder sich geändert haben. Unveränderte Dateien werden übersprungen – das spart bei wiederkehrenden Sicherungen sehr viel Zeit, Datenvolumen und Akku. Der Schalter „Nur geänderte Dateien übertragen" steht im Job-Bearbeiten-Bildschirm und ist standardmäßig eingeschaltet.
Eine Datei wird nur dann übersprungen, wenn alle drei Bedingungen zutreffen:
Punkt 3 ist wichtig: Wird eine Datei auf dem Server gelöscht oder kommt sie bei einem Abbruch nur halb an, wird sie beim nächsten Lauf automatisch erneut übertragen. Ebenso wird eine Datei, deren Übertragung fehlgeschlagen ist, beim nächsten Mal wieder versucht.
Der Status nennt übersprungene Dateien getrennt aus, z. B.
500 von 500 Dateien gesichert, 480 unverändert. Wer alles noch einmal vollständig
übertragen möchte (z. B. nach einem Wechsel des Zielordners), schaltet den Schalter einfach
für einen Durchlauf aus.
Nur über WLAN sichern. Standardmäßig startet eine Sicherung nur über eine volumenfreie Verbindung (WLAN). Ohne diesen Schutz würde eine geplante nächtliche Sicherung auch über Mobilfunk laufen und bei einem Fotoordner schnell etliche Gigabyte Datenvolumen verbrauchen. Ist gerade kein WLAN verfügbar, wartet der Job und startet automatisch, sobald WLAN da ist — die App zeigt in diesem Fall „Wartet auf WLAN…" statt vorzutäuschen, es liefe bereits etwas. Wer bewusst auch mobil sichern möchte, schaltet den Schalter im Job aus.
Protokoll: was wurde nicht gesichert? Der Status nennt nur die Anzahl der Fehler und ein Beispiel. Über „📄 Protokoll des letzten Laufs" im Job-Bearbeiten-Bildschirm steht dagegen jede einzelne nicht gesicherte Datei mit vollem Zielpfad und Ursache. Genau das ist bei einer Sicherung die entscheidende Information — nicht „irgendetwas fehlt", sondern „diese Dateien sind nicht geschützt". Über „Teilen" lässt sich das Protokoll bei Bedarf weitergeben; es enthält keine Zugangsdaten.
Server-Fingerabdruck zurücksetzen. Bei SFTP merkt sich BackmeUp beim ersten Verbinden den Schlüssel des Servers und verweigert später die Verbindung, wenn dieser sich ändert (Schutz vor einem untergeschobenen Server). Ändert er sich rechtmäßig — etwa nach einer Neuinstallation des NAS — wäre die Verbindung sonst dauerhaft blockiert. Der Knopf „Server-Fingerabdruck zurücksetzen" bei den Servereinstellungen löst das. Nur verwenden, wenn die Ursache der Änderung bekannt ist.
Für den Alltagsfall „ich brauche unterwegs etwas vom Server zurück" gibt es einen eigenen Eintrag. Über „+ Vom Server holen" auf dem Startbildschirm wird er angelegt. Er sichert nichts, sondern merkt sich nur, von welchem Server geholt wird und wohin es auf dem Handy soll. Das Formular hat drei Abschnitte:
Ordnerauswahl zum Sichern und der Zeitplan fehlen hier bewusst — für das Holen haben sie keine Bedeutung.
In der Übersicht erscheint der Eintrag mit einem ⬇ vor dem Namen und einem Knopf „⬇ Holen". Der führt auf einen Bildschirm mit zwei Möglichkeiten:
Ist ein Zielordner im Eintrag hinterlegt, landet das Ergebnis ohne weitere Nachfrage dort. Beim Ordner-Holen wird darin ein Unterordner mit dem Namen des Server-Ordners angelegt (bzw. wiederverwendet, falls schon einmal geholt), damit sich mehrere geholte Ordner nicht vermischen.
Was beim Ordner-Holen mit vorhandenen Dateien passiert: Standardmäßig wird eine Datei, die im Zielordner bereits liegt, übersprungen und nicht angerührt — ein erneutes Holen lädt also nur nach, was seit dem letzten Mal dazugekommen ist, ohne etwas zu überschreiben oder zu löschen.
Wer den Ordner wirklich abgleichen will, schaltet im Eintrag „Geänderte Dateien aktualisieren" ein (neu in Version 3.6). Dann wird eine vorhandene Datei zusätzlich mit der Größe auf dem Server verglichen und bei Abweichung neu geholt und dabei überschrieben. Der Schalter ist bewusst standardmäßig aus und fragt beim Einschalten noch einmal nach, denn er hebt den bisherigen Grundsatz auf, dass BackmeUp auf dem Handy nie etwas überschreibt: Eine auf dem Handy geänderte Datei geht dabei verloren. Verglichen wird nur die Größe – aus demselben Grund wie beim Sichern (Abschnitt 4b): Die Zeitstempel der Protokolle sind unterschiedlich genau und beziehen sich auf unterschiedliche Zeitzonen. Eine Änderung, die die Dateigröße nicht verändert, wird deshalb nicht erkannt.
Protokoll und letzter Lauf (neu in Version 3.6). Auch ein Hol-Vorgang schreibt jetzt ein Protokoll — mit jeder geholten, aktualisierten und fehlgeschlagenen Datei samt Ursache. Es steht sowohl im Holen-Bildschirm als auch im Eintrag über „📄 Protokoll des letzten Laufs" bereit, und die Übersicht zeigt beim Eintrag, wann zuletzt etwas geholt wurde. Bis Version 3.5 gab es für Hol-Zugänge überhaupt keine Aufzeichnung: Was geholt wurde und was fehlschlug, war nach dem Schließen des Bildschirms nicht mehr feststellbar.
Am Ende zeigt der Status, wie viele Dateien geholt, aktualisiert und übersprungen wurden; schlägt eine einzelne Datei fehl, bricht das den restlichen Ordner-Download nicht ab, sondern wird nur mitgezählt und protokolliert. Läuft das Handy dabei nicht über WLAN, fragt BackmeUp vor dem Ordner-Holen nach — ein Ordner voller Fotos kann das Datenvolumen eines Monats aufbrauchen.
Beim Holen einer einzelnen Datei bestimmt weiterhin ausschließlich der Nutzer über den Android-Speicherdialog, wohin geschrieben wird, sofern kein Zielordner hinterlegt ist; Android legt bei Namensgleichheit selbstständig eine neue Datei an, statt etwas zu überschreiben.
Die Meldung bei „Verbindung testen" zeigt fast immer sofort, in welchem Bereich das Problem liegt. Diese Fehler treten nicht in BackmeUp selbst auf, sondern beim Server bzw. Router davor — hier die typischen Ursachen und wie man sie eingrenzt.
Grundunterscheidung: Ob eine Adresse erreichbar ist, hängt davon ab, von wo aus verbunden wird:
| Verbindungsart | Adresse im Job | Typischer Fall |
|---|---|---|
| Im Heimnetz (WLAN) | lokale Adresse des Servers, z. B. 192.168.1.50 |
Handy und Server im selben WLAN |
| Über Internet | DynDNS-Adresse, z. B. meinname.synology.me |
Sicherung läuft unterwegs oder über Mobilfunk |
Für beide Fälle in einem Job dieselbe DynDNS-Adresse zu verwenden funktioniert nicht immer zuverlässig (siehe NAT-Hairpinning unten) – im Zweifel für den Heimnetz-Betrieb die lokale Adresse eintragen.
„Connection timed out" / „No route to host" beim Test im eigenen WLAN:
Gleicher Fehler beim Test über Mobilfunk (außerhalb des Heimnetzes):
Von außen testen, ohne BackmeUp selbst zu bemühen: Ein Online-Port-Checker
zeigt schnell, ob der Port überhaupt erreichbar ist. Wichtig dabei: manche dieser Tools testen
nur die eigene, gerade aktive Verbindung und lassen sich nicht auf eine andere Zieladresse
umstellen (Feld heißt dann oft „Your IP" und ist nicht änderbar) – damit lässt sich der eigene
Server nicht sinnvoll testen, sobald man selbst unterwegs ist. Tools mit einem frei änderbaren
Feld „Remote Address" (z. B. yougetsignal.com/tools/open-ports/) sind dafür die
richtige Wahl: dort die DynDNS-Adresse und den externen Port eintragen. Zeigt das Ergebnis
„offen", liegt ein verbleibendes Problem eher an BackmeUp-Einstellungen (Adresse/Port/Protokoll
im Job); zeigt es „geschlossen" oder „No route to host", liegt es an Router oder Server.
Der Fall ist besonders irreführend: Im eigenen WLAN funktioniert alles, unterwegs über Mobilfunk läuft dieselbe Verbindung in einen Zeitüberschreitungsfehler. Naheliegend ist der Verdacht, die Portfreigabe oder die DynDNS-Adresse sei falsch – beides kann aber tadellos eingerichtet sein. Die Ursache liegt darin, dass Handy und Router sich über zwei verschiedene Internet-Protokolle unterhalten.
Hintergrund: Heutige Anschlüsse arbeiten mit Dual Stack, also mit IPv4 und IPv6 gleichzeitig. Der DDNS-Dienst einer Synology trägt unter demselben Namen standardmäßig beide Adressen ein – einen A-Eintrag für IPv4 und einen AAAA-Eintrag für IPv6. Die Portfreigabe im Router gilt aber nur für IPv4; in der FRITZ!Box steht im Freigabe-Dialog sogar ausdrücklich „(Nur IPv4)" unter dem Port-Feld. Für IPv6 gibt es also keine Freigabe, und die IPv6-Firewall des Routers blockiert die Verbindung. Welchen der beiden Wege ein Gerät wählt, entscheidet normalerweise das Betriebssystem – und Mobilfunknetze bevorzugen häufig IPv6.
| Von wo | Was ohne Zutun benutzt würde | Ergebnis |
|---|---|---|
| Heim-WLAN | meist IPv4 im lokalen Netz | funktioniert – die Portfreigabe greift bzw. wird gar nicht gebraucht |
| Mobilfunk | häufig IPv6 (AAAA-Eintrag) | Zeitüberschreitung – für IPv6 gibt es keine Freigabe |
Was BackmeUp seit 3.4 tut: Die App löst die Serveradresse selbst auf und verbindet zuerst über IPv4 – also über den Weg, den du mit deiner Portfreigabe eingerichtet hast. Erst wenn darüber keine Verbindung zustande kommt, wird IPv6 versucht. Damit funktionieren beide Lager ohne Einstellung: der Normalfall ebenso wie ein DS-Lite-Anschluss, bei dem der Anbieter gar keine eigene öffentliche IPv4-Adresse vergibt und deshalb umgekehrt nur IPv6 übrig bleibt.
Falls es trotzdem nicht klappt – so prüfst du, ob es daran liegt: Lass die
DynDNS-Adresse auflösen und sieh nach, ob es neben dem A- auch einen AAAA-Eintrag gibt. Am PC
mit nslookup -type=AAAA meinname.synology.me, alternativ mit einem beliebigen
Online-DNS-Werkzeug. Der A-Eintrag sollte mit der IPv4-Adresse übereinstimmen, die der Router
unter Internet → Freigaben als „IPv4-Adresse im Internet" anzeigt – tut er das,
arbeitet DynDNS korrekt und ist nicht die Ursache.
Bleibt es dabei, dass nur der IPv6-Weg zur Verfügung steht (typisch bei DS-Lite), gibt es zwei Möglichkeiten. Die naheliegende – IPv6 am Router freigeben – ist mit Vorsicht zu genießen: Weil IPv6 ohne Adressumsetzung arbeitet, kennt die FRITZ!Box hier keine einzelnen Portfreigaben, sondern nur den Schalter „Dieses Gerät komplett für den Internetzugriff über IPv6 freigeben (Exposed Host)".
Die zweite und sauberere Möglichkeit ist ein privates Netz statt offener Ports: Ein VPN-Dienst wie Tailscale oder WireGuard – bei Synology als Paket installierbar, auf dem Handy als App – verbindet Handy und Server in einem eigenen, verschlüsselten Netz. Am Router muss dafür überhaupt kein Port geöffnet werden, und die Frage IPv4 oder IPv6 stellt sich nicht mehr. In BackmeUp wird dann einfach die Adresse eingetragen, die das VPN dem Server gibt. Etwas mehr einmaliger Aufwand, dafür dauerhaft die sicherste Variante.
Warum das nötig ist: SFTP ist kein eigenständiges Programm, sondern ein Übertragungsweg, der auf einem SSH-Server aufsetzt. Bei einer Synology ist dieser Server bereits Teil von DSM und wird nur mit einem Schalter aktiviert (siehe Abschnitt 4). Wer stattdessen einen gewöhnlichen Windows-, Linux- oder Mac-Rechner als Backup-Ziel verwenden möchte (z. B. den heimischen PC statt eines NAS), muss dort zunächst einen SSH-Server einrichten. Erst danach nimmt der Rechner SFTP-Verbindungen überhaupt entgegen. Wie das je nach Betriebssystem geht, steht in den folgenden drei Abschnitten – danach ist die Einrichtung in BackmeUp selbst bei allen drei Systemen identisch (siehe Beispiel am Ende dieses Abschnitts).
Schritt 1: OpenSSH-Server installieren
Optionale Features eintippen und den
gleichnamigen Treffer öffnen.OpenSSH-Server suchen, auswählen und installieren. (Nicht zu
verwechseln mit „OpenSSH-Client" – der ist meist schon vorinstalliert und reicht für einen
Server-Betrieb nicht aus.)Alternativ geht es auch per PowerShell, als Administrator gestartet:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Schritt 2: Dienst starten und dauerhaft aktivieren
Ebenfalls in einer PowerShell mit Administratorrechten:
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
Der zweite Befehl sorgt dafür, dass der SSH-Dienst auch nach einem Neustart automatisch wieder läuft – ohne ihn würde jede geplante nächtliche Sicherung ins Leere laufen, sobald der Rechner neu gestartet wurde.
Schritt 3: Firewall prüfen
Windows legt beim Installieren des Features normalerweise automatisch eine passende Firewall-Regel „OpenSSH SSH Server (sshd)" für Port 22 an. Kurzer Kontrollblick unter Windows-Sicherheit → Firewall & Netzwerkschutz → Erweiterte Einstellungen → Eingehende Regeln lohnt sich trotzdem, falls die Verbindung später nicht zustande kommt.
Schritt 1: OpenSSH-Server installieren
In einem Terminal, je nach Distribution:
# Debian, Ubuntu und Ableger: sudo apt update && sudo apt install openssh-server # Fedora, RHEL, Rocky Linux und Ableger: sudo dnf install openssh-server # Arch Linux und Ableger: sudo pacman -S openssh
Schritt 2: Dienst starten und dauerhaft aktivieren
sudo systemctl enable --now ssh
(Bei manchen Distributionen, z. B. Fedora/RHEL, heißt der Dienst sshd statt
ssh – gilt dann entsprechend für den Befehl oben.) enable --now startet
den Dienst sofort und sorgt dafür, dass er auch nach jedem Neustart automatisch wieder
läuft.
Schritt 3: Firewall prüfen
# Falls ufw aktiv ist (Debian/Ubuntu): sudo ufw allow 22/tcp # Falls firewalld aktiv ist (Fedora/RHEL): sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload
macOS bringt den SSH-Server bereits fertig mit – hier ist keine zusätzliche Installation nötig, er muss nur eingeschaltet werden:
Die Firewall von macOS lässt eingehende Remote-Login-Verbindungen zu, sobald der Dienst auf diesem Weg aktiviert wurde; eine gesonderte Freigabe ist normalerweise nicht nötig.
Vor der Einrichtung in BackmeUp lohnt ein kurzer Test von einem anderen Gerät im selben Netz, z. B. von einem weiteren Computer oder per SSH-App:
ssh benutzername@192.168.1.50
Fragt das Programm nach dem Passwort und lässt sich danach anmelden, läuft der Server korrekt.
benutzername ist dabei der ganz normale Anmeldename des jeweiligen Systems,
192.168.1.50 die lokale IP-Adresse des Rechners:
ip a oder hostname -I192.168.1.50 (für Sicherung von
unterwegs zusätzlich Portweiterleitung am Router einrichten, siehe Abschnitt 4e).22 (Standardport von SSH/SFTP, sofern nicht bewusst geändert)./ eintragen, z. B.
BackmeUp – der Pfad ist relativ zum Benutzerordner und landet damit z. B. unter
C:\Users\benutzername\BackmeUp (Windows), /home/benutzername/BackmeUp
(Linux) bzw. /Users/benutzername/BackmeUp (macOS) – siehe auch Tabelle in
Abschnitt 4a. Alternativ über „🔍 Zielordner auf Server suchen" durchklicken statt selbst
zu tippen.Bis Version 3.6 übertrug BackmeUp nur den Inhalt einer Datei. Auf dem Server trug die Kopie deshalb das Datum ihrer Sicherung — bei einem gesicherten Fotoordner also schlagartig alle Dateien dasselbe. Sortieren nach Datum, „neueste zuerst" und jede Suche nach einem Zeitraum waren auf der Serverseite damit wertlos.
Ab Version 3.7 wird der Änderungszeitpunkt der Ursprungsdatei mit übertragen. Für die bereits gesicherten Dateien holt der erste Lauf nach dem Update das einmalig nach: Auch Dateien, die als unverändert übersprungen werden, bekommen dabei ihren richtigen Zeitstempel. Das kostet nur einen kleinen Befehl je Datei — nichts wird erneut hochgeladen. Danach geschieht es still bei jeder Übertragung mit.
| Protokoll | Zeitstempel |
|---|---|
| SFTP | ja |
| FTP / FTPS | ja, sofern der Server den Befehl MFMT beherrscht (heute üblich) |
| SMB | ja |
| WebDAV | nein — das Protokoll führt den Änderungszeitpunkt selbst und gibt ihn nicht zum Setzen frei. Wem die Originaldaten wichtig sind, nutzt eines der anderen drei Protokolle. |
Da Sicherheit beim Thema "automatischer Datei-Upload" besonders wichtig ist, hier eine offene Übersicht, was die App tut und was nicht:
| Version | Datum | Änderungen |
|---|---|---|
| 1.0 | 30.07.2026 | Erste Version: SFTP/WebDAV/FTP-FTPS/SMB, freie Zeitplanung (feste Uhrzeiten oder Intervall), verschlüsselte Zugangsdaten, TOFU-Schlüsselprüfung bei SFTP. |
| 1.1 | 30.07.2026 | Richtiges App-Icon ergänzt (adaptives Icon, Wolke mit Upload-Pfeil, rund und eckig maskierbar). |
| 1.2 | 30.07.2026 | Build-Fehler behoben: WebDAV-Upload nutzte eine bei sardine-android nicht existierende Methode (put mit InputStream). Umgestellt auf Upload über eine temporäre Datei im App-Cache. |
| 1.3 | 30.07.2026 | Zielordner-Feld normalisiert: Backslashes (\) werden jetzt automatisch in Schrägstriche (/) umgewandelt, auch beim Basisverzeichnis (vorher nur bei Ordnernamen). Hinweistext im Feld ergänzt. |
| 1.4 | 30.07.2026 | Zielordner-Browser ergänzt (Button "🔍 Zielordner auf Server suchen"): Ordnerstruktur auf dem Server durchklicken statt Pfad eintippen, für alle vier Protokolle. Icon-Farbe von Lila auf dezentes Hellblau geändert. |
| 1.5 | 30.07.2026 | Fehler "No such algorithm: X25519 for provider BC" beim SFTP-Verbindungsaufbau behoben: Androids eingeschränkter System-Sicherheitsanbieter wird beim App-Start durch die vollständige Bouncy-Castle-Bibliothek ersetzt. |
| 1.6 | 30.07.2026 | Fehler "no such file" behoben: Ein Fehlschlag beim Anlegen des Zielverzeichnisses wurde bisher stillschweigend ignoriert und tauchte erst viel später beim Datei-Upload als unklare Meldung auf. Jetzt wird sofort eine klare Fehlermeldung mit Ursache angezeigt (bei allen vier Protokollen). |
| 1.7 | 30.07.2026 | Gradle-Wrapper ergänzt (gradle-wrapper.properties, Gradle 8.7, passend zu Android Gradle Plugin 8.5.0) - Android Studio muss die Gradle-Version nicht mehr selbst raten. |
| 1.8 | 30.07.2026 | Build-Fehler "3 files found with path ...MANIFEST.MF" behoben: mehrere Bouncy-Castle-Bibliotheken enthielten dieselbe interne Metadaten-Datei. Per packaging-Block ausgeschlossen (betrifft keine echte Funktion). |
| 2.0 | 30.07.2026 | Grosses Update: Mehrere unabhängige Sicherungs-Jobs statt nur einer Konfiguration (eigene Ordner/Server/Zeitplan pro Job, neue Job-Übersicht und Job-Bearbeiten-Bildschirm). Ausserdem Fehler behoben: Unterordner wurden bei SFTP/FTP falsch angelegt, wenn der Zielordner relativ zum Server-Startverzeichnis gemeint war (z. B. Windows-OpenSSH) - Absolut/Relativ-Unterscheidung wird jetzt korrekt beibehalten. Beispielpfade für Synology, Windows-OpenSSH und SMB im Handbuch ergänzt. |
| 2.1 | 30.07.2026 | Handbuch ist jetzt direkt in der App über den Knopf "📖" erreichbar (kein separates Öffnen der Datei mehr nötig). Laufender Fortschritt ("X von Y Dateien") wird jetzt live in der Job-Übersicht und als Benachrichtigung mit Fortschrittsbalken angezeigt. Ein einzelner Datei- oder Ordnerfehler bricht die Sicherung nicht mehr komplett ab - alle übrigen Dateien werden trotzdem gesichert, das Ergebnis nennt die genaue Anzahl erfolgreicher/fehlgeschlagener Dateien. Ausserdem verhindert die App jetzt zuverlässig, dass derselbe Job zweimal gleichzeitig läuft. |
| 2.2 | 30.07.2026 | Absturz-Fix: Die App stürzte auf Android 14 beim Start einer Sicherung ab, weil der interne Fortschritts-Dienst von WorkManager ohne den erforderlichen Diensttyp registriert war (fehlende Angabe im Manifest). Jetzt korrekt deklariert. Ausserdem wird die Benachrichtigungs-Berechtigung (Android 13+) jetzt aktiv angefragt, sonst blieb der Fortschrittsbalken unsichtbar, selbst wenn die Sicherung im Hintergrund fehlerfrei lief. |
| 2.3 | 30.07.2026 | Fortschritt jetzt wirklich sichtbar: Die Oberflaeche zeigte bisher gar nichts an, solange die App noch Dateien zaehlte oder die Verbindung zum Server aufbaute (das kann bei vielen Dateien mehrere Sekunden dauern) - das wirkte wie "es passiert nichts". Jetzt erscheint ab dem Tastendruck auf "Jetzt sichern" sofort ein Status ("Wird gestartet…", "Zähle Dateien…", "Verbinde mit Server…") und danach ein echter Fortschrittsbalken mit Prozentanzeige ("312 von 500 Dateien (62%)") - in der Job-Übersicht und im Job-Bearbeiten-Bildschirm. Ausserdem lässt sich eine laufende Sicherung jetzt über den Knopf "Abbrechen" (ersetzt währenddessen "Jetzt sichern") gezielt stoppen. |
| 2.4 | 30.07.2026 | Laufenden Job nach Neustart der App erkennen: Der "Abbrechen"-Knopf aus Version 2.3 funktionierte nur, wenn man ihn in derselben App-Sitzung sah, in der man "Jetzt sichern" gedrückt hatte. Wurde die App geschlossen und neu geöffnet, während eine Sicherung noch im Hintergrund lief, zeigte der Bildschirm wieder fälschlich "Jetzt sichern" statt "Abbrechen". Die App fragt jetzt beim Öffnen aktiv bei WorkManager nach, was für jeden Job wirklich gerade läuft (auch bei durch einen geplanten Alarm gestarteten Sicherungen) und zeigt Fortschritt/Abbrechen-Knopf entsprechend korrekt an. |
| 2.5 | 30.07.2026 | Ergebnis eines vollständigen Code-Reviews –
vier schwerwiegende Fehler behoben:
(1) Zielordner „/" (der Standardwert, wenn das Feld leer bleibt) erzeugte einen relativen statt absoluten Pfad. Die Dateien landeten still im Anmelde-Heimatverzeichnis statt im Server-Wurzelverzeichnis – bei gemeldetem Erfolg. (2) FTP/FTPS mit relativem Zielordner funktionierte nur beim ersten Lauf; danach entstand ein doppelt verschachtelter Pfad und der Job brach vollständig ab. (3) Intervall-Modus geriet in eine Alarm-Endlosschleife: Der nächste Alarm wurde aus einem Wert berechnet, den die laufende Sicherung noch gar nicht geschrieben hatte. Dadurch wurde die laufende Sicherung immer wieder abgebrochen und neu gestartet und kam nie zum Ende. (4) WebDAV kodierte Datei- und Ordnernamen nicht für die URL. Dateien mit Leerzeichen schlugen fehl, Namen mit „#", „?" oder „%" landeten unter falschem Namen. Außerdem verbessert: Der Ordnerbaum wird nur noch einmal statt zweimal eingelesen; Fortschrittsmeldungen sind gedrosselt (statt eines Datenbankzugriffs und eines kompletten Neuaufbaus der Oberfläche pro Datei), was die Sicherung spürbar beschleunigt; „Abbrechen" greift jetzt zuverlässig und zeitnah; nach drei erfolglosen Versuchen wird aufgegeben statt endlos zu wiederholen; gleichzeitig laufende Jobs überschreiben sich nicht mehr gegenseitig die Fortschrittsanzeige; ein während der Sicherung bearbeiteter oder gelöschter Job wird nicht mehr überschrieben bzw. wiederhergestellt; SMB verlangt jetzt mindestens SMB2 und hat Zeitlimits. Sicherheit: „FTPS (verschlüsselt)" verschlüsselte bisher nur den Steuerkanal – die Dateiinhalte gingen im Klartext über die Leitung. Jetzt wird auch der Datenkanal verschlüsselt. Zusätzlich wird die Bouncy-Castle-Bibliothek nicht mehr prozessweit vorrangig gesetzt, sodass alle übrigen Verschlüsselungsvorgänge weiterhin Androids native, gehärtete Implementierung nutzen. |
| 2.6 | 30.07.2026 | Änderungsabgleich: Es werden nur noch neue und geänderte Dateien übertragen; unveränderte werden übersprungen (Schalter „Nur geänderte Dateien übertragen", standardmäßig ein). Der Abgleich stützt sich ausschließlich auf Größe und Änderungszeit auf dem Handy sowie die Dateigröße auf dem Server – bewusst nicht auf Server-Zeitstempel, die je nach Protokoll ungenau oder zeitzonenverschoben sind. Auf dem Server gelöschte oder unvollständig angekommene Dateien werden dadurch automatisch erneut übertragen, ebenso zuvor fehlgeschlagene. Je Ordner ist dafür nur EINE Abfrage nötig. Der Status weist übersprungene Dateien getrennt aus. Wird eine Sicherung abgebrochen, bleibt der erreichte Stand erhalten und der nächste Lauf macht dort weiter. |
| 2.7 | 30.07.2026 | Nur über WLAN sichern (Schalter je Job,
standardmäßig ein): Geplante Sicherungen laufen nicht mehr versehentlich über Mobilfunk, sondern
starten automatisch, sobald WLAN verfügbar ist. Ein wartender Job wird jetzt als „Wartet auf
WLAN…" angezeigt statt endlos als „Wird gestartet…".
Protokoll des letzten Laufs je Job, in der App einsehbar und teilbar: nennt jede einzelne nicht gesicherte Datei mit vollem Zielpfad und Ursache (bisher war nur die Anzahl und ein Beispiel sichtbar). Hinweis zur Akku-Optimierung beim Aktivieren der automatischen Sicherung — der häufigste Grund, warum geplante Sicherungen stillschweigend ausfallen. Server-Fingerabdruck zurücksetzbar (SFTP): Nach einer rechtmäßigen Änderung des Serverschlüssels, etwa durch Neuinstallation des NAS, war die Verbindung bisher dauerhaft blockiert, ohne Ausweg außer dem Löschen aller App-Daten. |
| 2.8 | 30.07.2026 | Einzelne Datei vom Server holen: Neuer Knopf „⬇ Datei vom Server holen" im Job-Bearbeiten-Bildschirm. Der Server-Browser zeigt jetzt zusätzlich Dateien samt Größe; nach dem Antippen bestimmt der Android-Speicherdialog das Ziel. Funktioniert mit allen vier Protokollen. Bewusst auf einzelne Dateien beschränkt — siehe Abschnitt 4d. |
| 2.9 | 30.07.2026 | „Vom Server holen" ist jetzt ein eigener Eintragstyp statt einer Zusatzfunktion im Sicherungs-Formular. Über „+ Neuer Server-Zugang zum Holen" angelegt und dauerhaft gespeichert, in der Übersicht mit ⬇ markiert und einem eigenen Knopf „⬇ Holen". Das Formular blendet dabei alles aus, was nur das Sichern betrifft (Ordnerauswahl, Zeitplan, WLAN- und Abgleich-Schalter, automatische Sicherung) — vorher musste man für einen reinen Download unsinnigerweise Ordner und Zeitplan angeben. Der frühere Download-Knopf im Sicherungs-Formular ist entfallen; Sicherungs-Jobs handeln jetzt ausschließlich vom Sichern. |
| 3.0 | 30.07.2026 | Hol-Einträge zu Ende gedacht: Der Eintrag heißt jetzt schlicht „Datei vom Server holen" statt „Server-Zugang zum Holen". Die Abschnitte sind eigenständig nummeriert und richtig benannt — „1. Woher holen?" statt „2. Wohin sichern?", weil der Ordner-Abschnitt hier entfällt. Neu ist „2. Wohin auf dem Handy speichern?": ein per Android-Ordnerauswahl bestimmter Zielordner, der im Eintrag gespeichert wird. Ist er gesetzt, landet eine geholte Datei ohne weitere Nachfrage dort; ohne ihn fragt Android wie bisher jedes Mal. Vorhandene Dateien werden weiterhin nie überschrieben. |
| 3.1 | 01.08.2026 | Handbuch erweitert: Neuer Abschnitt 4e „„Verbindung testen" schlägt fehl – Fehlersuche" mit den häufigsten Ursachen, wenn die Verbindung zum Server nicht zustande kommt: NAT-Hairpinning beim Testen im eigenen WLAN, falsch eingerichtete Portfreigabe am Router (interner vs. externer Port), fehlende feste lokale Adresse des Servers sowie Hinweise zur richtigen Wahl eines Online-Port-Checker-Tools. Keine Code-Änderung, reine Dokumentationsergänzung aus einem konkreten Anwendungsfall. |
| 3.2 | 02.08.2026 | Handbuch erweitert: Neuer Abschnitt 4f „SFTP-Ziel auf einem Windows-PC: OpenSSH installieren und einrichten" – erklärt, warum ein Windows-PC als SFTP-Ziel erst den optionalen OpenSSH-Server benötigt (im Gegensatz zur Synology, wo SSH bereits Teil von DSM ist), mit schrittweiser Installations-, Aktivierungs- und Testanleitung sowie einem durchgängigen Beispiel für die Job-Einrichtung in BackmeUp. Keine Code-Änderung, reine Dokumentationsergänzung. |
| 3.3 | 02.08.2026 | Handbuch korrigiert und erweitert: Abschnitt 4f war bisher auf Windows beschränkt und enthielt zudem einen falschen Pfad für Windows 11 – Optionale Features liegen dort unter Einstellungen → System → Optionale Features, nicht unter Apps (das gilt nur für Windows 10); Hinweis zum schnellen Aufruf über die Windows-Suche ergänzt. Abschnitt 4f jetzt zusätzlich mit vollständiger Anleitung für Linux (OpenSSH-Server per apt/dnf/pacman, systemctl, Firewall) und macOS (bereits eingebauter SSH-Server, Aktivierung über Systemeinstellungen → Freigabe → Entfernte Anmeldung). Die Pfad-Tabelle in Abschnitt 4a enthält jetzt eigene Zeilen für Linux-PC und Mac und verweist überall auf Abschnitt 4f. Keine Code-Änderung, reine Dokumentationskorrektur/-erweiterung. |
| 3.4 | 03.08.2026 | Verbindungsaufbau: IPv4 zuerst, IPv6 als
Rückfallebene. Behebt einen in der Praxis kaum durchschaubaren Fehler: Der
DDNS-Dienst veröffentlicht unter demselben Namen sowohl einen A- (IPv4) als auch einen
AAAA-Eintrag (IPv6), die Portfreigabe im Router gilt jedoch ausschließlich für IPv4. Im
Heim-WLAN fiel das nicht auf, über Mobilfunk – wo häufig IPv6 bevorzugt wird – lief die
Verbindung in eine Zeitüberschreitung, obwohl Portfreigabe und DynDNS korrekt eingerichtet
waren. BackmeUp wählt die Adresse jetzt selbst: erst IPv4, und nur falls darüber keine
Verbindung zustande kommt, IPv6 – damit funktionieren der Normalfall und ein DS-Lite-Anschluss
(nur IPv6 möglich) gleichermaßen ohne Einstellung. Umgesetzt für SFTP,
FTP/FTPS und WebDAV über die neue Klasse
util/HostAddresses.kt; bei SFTP wird der Server-Fingerabdruck weiterhin unter dem
konfigurierten Hostnamen abgelegt, damit derselbe Server nicht je nach Adressfamilie zwei
Einträge bekommt und der Knopf „Server-Fingerabdruck zurücksetzen" weiter greift. Bei SMB
bewusst nicht umgesetzt (LAN-Protokoll). Handbuch: neuer Unterabschnitt in 4e mit Hintergrund,
Prüfung per nslookup und den verbleibenden Wegen für reine IPv6-Anschlüsse
(Exposed Host mit ausdrücklicher Warnung, oder VPN ohne offene Ports). |
| 3.5 | 04.09.2026 | Ganze Ordner vom Server holen: Der Holen-Bildschirm hat jetzt zwei Knöpfe statt einem: „Datei auswählen" (wie bisher) und neu „Ganzen Ordner auswählen". Beim Ordner-Holen durchsucht BackmeUp rekursiv alle Unterordner des gewählten Server-Ordners und legt dieselbe Struktur im gewählten Zielordner auf dem Handy an. Bereits vorhandene Dateien werden dabei übersprungen statt überschrieben – ein erneutes Holen lädt also nur nach, was neu hinzugekommen ist. Schlägt eine einzelne Datei fehl, bricht das den restlichen Ordner-Download nicht ab. Technisch ohne Änderung an den Protokoll-Implementierungen möglich, da die dafür nötigen Bausteine (Unterordner auflisten, Dateien mit Größe auflisten, einzelne Datei laden) bereits vorhanden waren. Handbuch: Abschnitt 4d entsprechend erweitert. |
| 3.6 | 06.09.2026 | Vollständige Prüfung aller Sicherungswege und
der Einstellungen; zehn Punkte behoben.
Sichern: Gleichnamige Ordner (z. B. „Download" intern und auf der SD-Karte) landeten
im selben Serverordner und überschrieben sich dort gegenseitig – jetzt bekommt jeder Ordner
einen eindeutigen, über alle Läufe stabilen Zielnamen (neue Klasse
util/FolderNames.kt), sichtbar schon in der Ordnerliste. Ineinander liegende
Ordner werden bei der Auswahl abgelehnt. Ein nicht lesbarer Ordner wird nicht mehr
stillschweigend übersprungen, sondern im Status und im Protokoll genannt; der Lauf gilt dann
nicht als erfolgreich. Der Schalter „Automatische Sicherung" in der Übersicht schrieb einen
veralteten Datensatz zurück und konnte damit den zuletzt gespeicherten Laufstatus löschen –
er ändert jetzt nur noch dieses eine Feld.
Verbindungen: SFTP hatte als einziges Protokoll kein Lesezeitlimit und konnte an
einem stumm gewordenen Server unbegrenzt hängen (jetzt 60 s, wie bei FTP und SMB). SMB
kodiert Datei- und Ordnernamen jetzt für die Adresse – Namen mit „#", „%" oder „?" scheiterten
vorher oder landeten falsch (für WebDAV war das bereits in 2.5 behoben). Der
WebDAV-Verbindungstest meldete auch dann Erfolg, wenn der Server die Anfrage gar nicht
beantwortete; er fragt jetzt richtig nach.
Einstellungen: Der Port wird geprüft (1–65535) statt bei einer Fehleingabe
stillschweigend auf den Standard zurückzufallen, und beim Wechsel des Protokolls
mitgeführt; der SMB-Freigabename ist Pflichtfeld.
Holen: Der beim Holen gewählte Zielordner wird jetzt dauerhaft gemerkt. Hol-Zugänge
schreiben ein Protokoll und einen Laufstatus wie eine Sicherung (vorher gab es dafür gar keine
Aufzeichnung). Neuer Schalter „Geänderte Dateien aktualisieren" mit Sicherheitsabfrage, und
vor dem Ordner-Holen ohne WLAN wird nachgefragt. Neuer Abschnitt „3. Jetzt holen" im Formular
des Hol-Zugangs mit zwei Knöpfen („Einzelne Datei holen" / „Ganzen Ordner holen"): Beide
speichern und öffnen die passende Serverauswahl unmittelbar, damit schon beim Anlegen sichtbar
ist, dass sich sowohl eine einzelne Datei als auch ein ganzer Ordner holen lässt — vorher
sprach das Formular ausschließlich von Ordnern, und die Wahl tauchte erst über den Umweg
Übersicht → „⬇ Holen" auf. Eine feste Quelldatei wird bewusst nicht gespeichert (wechselnde
Dateinamen), nur der Startordner. Beim Hol-Zugang heißen Feld und Suchknopf jetzt
„Startordner auf dem Server" statt „Zielordner" — beim Holen ist der Serverordner die Quelle. Handbuch: neuer Abschnitt 3a, Abschnitt 2 um die
Installation der fertigen APK ergänzt, Abschnitt 4d überarbeitet, Einschränkungen
erweitert. |
| 3.7 | 06.09.2026 | Zeitstempel und Sicherung der
Einstellungen.
Zeitstempel: Gesicherte Dateien trugen auf dem Server bisher das Datum ihrer
Sicherung – bei einem Fotoordner alle dasselbe, wodurch jede Sortierung nach Datum wertlos
wurde. Der Änderungszeitpunkt wird jetzt mit übertragen (SFTP, FTP/FTPS und SMB; WebDAV kann
das protokollbedingt nicht), und der erste Lauf nach dem Update holt ihn für den gesamten
bereits gesicherten Bestand einmalig nach, ohne etwas erneut hochzuladen. Neue
Schnittstellen-Methode setModificationTime, neues Job-Feld
timestampsFixed.
Einstellungen sichern: Neuer Bereich auf dem Startbildschirm, der alle Jobs und
Zugänge in eine Datei schreibt und wieder einliest (neue Klasse
data/JobsBackup.kt) – wahlweise mit Kennwort und vollständig (AES-256-GCM,
Schlüssel per PBKDF2 mit 120.000 Durchläufen) oder ohne Kennwort und dann ohne Passwörter.
Handbuch: neue Abschnitte 3b und 4g, Einschränkungen erweitert. |