Syncthing
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Mit Syncthing 🇬🇧 können Verzeichnisse und Dateien über verschiedene Geräte im lokalen Netzwerk synchronisiert werden. Es läuft als Dienst im Hintergrund und wird über eine Web-Schnittstelle mit dem Browser bedient. Zusätzlich sind GUI-Programme zur Verwaltung des Dienstes verfügbar.
Syncthing ist für viele verschiedene Betriebssysteme und Plattformen verfügbar: https://syncthing.net/downloads/ ⮷
Linux (x86, ARM, MIPS, etc.)
Windows
FreeBSD, OpenBSD, NetBSD, etc.
macOS
Solaris, Illumos
Android
GrapheneOS (hier: Syncthing-App über Aurora-Store installiert)
Für die genannten Systeme ist mindestens die Basisvariante (Dienst mit Web-Schnittstelle) verfügbar, GUI-Programme und andere Zusatzwerkzeuge sind nicht überall vorhanden.
Zwischen verschiedenen Systemen und Architekturen kann uneingeschränkt synchronisiert werden, wenn auf beiden Seiten die gleiche Version von Syncthing installiert ist.
Installation¶
Syncthing kann direkt aus den Quellen installiert werden [1].
syncthing (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install syncthing
Oder mit apturl installieren, Link: apt://syncthing
Hier ist nur der Basisdienst enthalten, der zur Benutzung ausreichend ist.
Gerade wenn Syncthing über das Internet verwendet wird, kann es sinnvoll sein, das PPA zu nutzten. Denn Pakete aus universe werden nicht unbedingt mit Sicherheitsupdates versorgt.
Installation über Fremdquelle¶
Achtung!
Zusätzliche Fremdquellen können das System gefährden.
Eine aktuellere Version (als in den Paketquellen) kann man über die offizielle Anleitung von syncthing.net 🇬🇧 installieren:
# PGP-Schlüssel des Repositorys einfügen sudo curl -s -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
# Paketquelle hinzufügen echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
# Bevorzugung von Syncthing-Paketen ("Pinning") printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing
sudo apt update && sudo apt install syncthing
Bedienung¶
Gestartet wird der Dienst z.B. mit dem Terminal-Befehl:
syncthing
Soll Syncthing immer automatisch im Hintergrund laufen, so kann man den Befehl in Autostart anlegen.
Beispiele¶
Hier wird kurz gezeigt, wie man einen Raspberry Pi als Backup-Server einrichtet (mehr Informationen dazu findet man z.B. in der Zeitschrift ct' 14/21 im Artikel "Raspberry Pi als zentralen Backup-Server mit Syncthing einrichten"). Damit lassen sich z.B. Fotos im Speicher eines Mobiltelefons und ausgewählte Dateien eines Desktop-PCs auf einer externen Festplatte, welche am Raspberry Pi angeschlossen ist, synchronisieren.
Synchronisation des /home-Verzeichnisses eines Rechners auf einen Raspberry Pi¶
Dazu wird auf dem PC und einem Raspberry Pi zunächst Syncthing (mit der Fremdquelle) installiert. Der Raspberry Pi und der Rechner müssen im selben LAN bzw. WLAN sein. Ob der Dienst tatsächlich auf dem Rechner läuft, kann man in einem Browser-Fenster (dieses Rechners) unter 127.0.0.1:8384
nachschauen:
Zur erstmaligen Einrichtung wird der Raspberry Pi an einen Monitor angeschlossen, um grafisch im Browser arbeiten zu können. Damit Syncthing bei jedem Neustart des Raspberry Pis automatisch gestartet wird, kann man mit dem Befehl:
crontab -e
die Datei um die folgende Zeile erweitern:
@reboot syncthing
Um den Synchronisierungsdienst nutzen zu können, müssen sich die beteiligten Geräte "kennen". Dazu öffnet man am Rechner (= Quelle) im Browserfenster die Seite 127.0.0.1:8384
und wählt unter "Externe Geräte" die Schaltfläche "+ Gerät hinzufügen". Wenn der Raspberry Pi (= Ziel) schon im gleichen Netz mit Syncthing läuft, so wird er (ggf. nach kurzer Zeit) dort angezeigt. Nun gibt man ihm noch einen gewünschten Namen (im Bild: "raspi").
Nach einiger Zeit bekommt man anschließend in Syncthing auf dem Raspberry Pi eine Meldung; der PC, von dem Daten synchronisiert werden sollen, kann nun genauso mit "Gerät hinzufügen" ausgewählt werden.
Zur Einrichtung der Synchronisierung werden auf dem Rechner mit der Option "+ Ordner hinzufügen" die gewünschten Ordner ausgewählt, hier das gesamte /home/BENUTZER. Unter "Dateiversionierung" hat man verschiedene Möglichkeiten, hier wurde im Beispiel die "Einfache Dateiversionierung" mit "Versionen erhalten" → 3 gewählt, was einen brauchbaren Kompromiss zwischen Sicherheit und benötigtem Speicherplatz darstellt. Evtl. ist nach dem ersten Scan notwendig, am PC unter "Externe Geräte > Bearbeiten > Teilen > Geteilte Ordner" zu kontrollieren, ob der zu teilende Ordner wirklich mit Häkchen ausgewählt ist.
Da eine übliche SD-Karte eines Raspberry Pis nicht besonders ausfallsicher ist, werden die Daten besser auf einer externen Festplatte gespeichert, welche am "raspi" an einem USB-Anschluss hängt (bevorzugt eine SSD, die eine geringe Leistungsaufnahme im Leerlauf hat). Daher muss der Ordnerpfad auf dem "raspi" auch angepasst werden, z.B. auf /media/home_BENUTZER. Falls man Syncthing für mehrere Benutzer oder Geräte nehmen möchte, empfiehlt es sich ggf. vorher die externe Festplatte mit GParted zu partitionieren. Weiterhin muss dann eine Partition mit geeigneten Rechten ausgestattet werden, z.B. mit
sudo chmod 777 /media/externe_Festplatte
(Achtung: Falls man hier einen falschen Pfad, wie z.B. /home/pi/media/...
angibt, dann wird auf der SD-Karte -statt auf der ext. Festplatte- dieser Ordner neu angelegt, welcher ggf. schnell voll läuft!)
Auf dem zu sichernden Rechner kann man im Syncthing-Menu neben der "Dateiversionierung" auch ein "Ignoriermuster" einstellen, um die eigenen Synchronisierungswünsche nach Bedarf anzupassen. Im Beispiel hier wurde gewählt:
.* # lässt alle versteckten Dateien weg !.thunderbird # Thunderbird-Ordner wird gesichert Downloads # Download-Ordner wird nicht gesichert
Später im Normalbetrieb kann man per ssh auf den "raspi" zugreifen und sich über htop bzw. top anzeigen lassen, ob der Dienst syncthing läuft und ggf. die gespeicherten Daten mit ls kontrollieren.
Sollte sich unbeabsichtigt (z.B. An- und Ausstecken) eine externe Festplatte nicht mehr mounten, so kann es notwendig sein, diese erneut in die Datei /ets/fstab einzutragen.
Hinweis:
Ein so eingerichtetes "Backup" des Rechners ersetzt kein richtiges Backup. Selbst wenn der Raspberry Pi in einem anderen Stockwerk steht: Eine Überspannung im Haus oder ein Brand kann alle Daten unwiderruflich zerstören.
Trotzdem kann eine solche Einrichtung ein schon bestehendes Backup-System sinnvoll ergänzen, gerade wenn die Datensicherung nur in größeren Zeitabständen ausgeführt wird.
Synchronisation von Bildern & Videos eines Android-Telefons auf einen Raspberry Pi¶
Damit kann man z.B. alle Bilder und Videos, die mit einem Mobiltelefon gemacht werden, zu Hause im WLAN automatisch auf den Raspberry Pi synchronisieren lassen, ohne dass dazu später noch irgendwelche Befehle oder Aufrufe notwendig sind. Auf dem hier benutzten Android-Telefon heißt der Ordner Kamera. Mit weiteren Einstellungen lassen sich ggf. auch andere Dateien des Mobilgeräts sichern, falls man das für notwendig hält.
Die Einrichtung erfolgt analog der o.g. Darstellung. Ein bereits eingerichteter Raspberry Pi wird erkannt, man muss jedoch den "raspi" in der Telefon-App aktivieren.
Man sollte die Synchronisierung der Daten in der Android-App anpassen: unter "Einstellungen → Betriebsbedingungen → bei WLAN-Verbindung ausführen" aktivieren (mobile Daten können evtl. hohe Kosten verursachen, falls man keine Flatrate besitzt).
Weiterhin kann es evtl. hilfreich sein, wenn man auf dem Raspberry Pi für den zu sichernden Android-Ordner unter "Einstellungen → Erweitert → Zugriffsrechte" aktiviert (siehe dortige Hinweise).
Bei Problemen hilft es manchmal den zu sichernden Ordner vom Mobiltelefon neu anzulegen. Dazu auf dem Raspberry Pi zuerst den betreffenden Ordner löschen. Wenn man nun auf dem Mobiltelefon im Syncthing-Menu "Neustart" wählt, wird die neue Anfrage auf dem Raspberry Pi im Browser-Fenster direkt angezeigt und kann mit ok bestätigt werden. Dann beginnt die Synchronisation von vorne.
Raspberry Pi über "Raspberry Pi Connect"¶
Es bietet sich an, bei einem Raspberry Pi 4 oder neuer bei der Ersteinrichtung mit Montitor gleich auch raspberry-pi-connect 🇬🇧 zu installieren. Dann kann man später die Funktion von Syncthing über den ferngesteuerten Desktop besser kontrollieren oder verändern, als wenn man über ssh arbeitet. Einen lesenwerten Artikel findet man auch bei kofler.info 🇩🇪.
Mit Firefox 126 ließ sich unter 22.04 keine Verbindung zum Raspberry Pi herstellen, mit Chromium dagegen funktionierte es (Stand: Mai 2024).
Probleme¶
In einigen Foreneinträgen wird mitunter die langsame Synchronisierungs-Datenrate bemängelt. Selbst unter Berücksichtung folgender Tuning-Optionen zeigt ein neu eingerichteter Raspberry Pi 4b, der mit per LAN verbunden ist, lediglich Downloadraten im Bereich von ca. 5 bis 25 KiB/s (Stand: 1.6.2024).
Änderungen der Options (ab Zeile 164 auf dem Pi) in der Datei .config/syncthing/config.xml
:
<progressUpdateIntervalS>-1</progressUpdateIntervalS> <setLowPriority>false</setLowPriority> <databaseTuning>large</databaseTuning>
Das liegt an der begrenzten CPU-Leistung des Raspberry Pis, ggf. sind neuere Geräte da spürbar schneller. Letztlich dauert die allererste Synchronisierung eines Geräts mit dem Raspberry Pi entsprechend lang. Für den späteren Betrieb spielt es für viele Anwender keine große Rolle mehr, wenn nur wenige Dateien nach dem Bearbeiten oder neue Fotos von einem Telefon synchronisiert werden.
Links¶
Dokumentation 🇬🇧 - Offizielle Dokumentation des Projekts (teilweise mit Erklärungsvideos)
Tuning-Optionen 🇬🇧 - Offizielle Dokumentation
raspberry-pi-syncthing 🇬🇧 - ausführlichere Anleitung, mehr Bilder