sshsync 3.0

Beschreibung: sshsync ist ein von mir selbst geschriebenes kleines Konsolenprogramm für Linux in C/C++ zum synchronisieren des Webspaces über eine ssh-Verbindung.

Syntax: sshsync [-v/--version] [-c zeichenbreite] [-y] lokalesVerzeichnis/ Webspace-Verzeichnis/

sshsync ist eigentlich die Weiterentwicklung von ftpsync, mit dem entscheidenden Unterschied, daß der entfernte Webspace nicht mittels curlftpfs eingehängt werden sollte, sondern mittels sshfs. Wer ssh auf dem Webspace seines Providers verwenden kann, dem empfehle ich dringend sshfs zu verwenden, da es ein paar entscheidende Vorteile bietet:

  1. Die Verbindung ist verschlüsselt, somit kann nicht wie bei FTP Daten auspioniert werden, wie z.B. das Paßwort, welches bei FTP sogar unverschlüsselt übertragen werden kann.
  2. Ein mit sshfs eingehängter Webspace ist wie ein lokales Verzeichnis, somit entfallen alle Probleme mit den Zeitstempeln die man unter curlftpfs hat (Falls sich der Ein oder Andere noch daran erinnert: ein mit curlftps eingehängtes FTP Verzeichnis gibt nach ca. 5,5 Monaten nur noch das Datum wieder aber nicht die Uhrzeit und je nach Jahreszeit ist die Uhrzeit um eine Stunde falsch).
  3. Bei sshfs wird nach dem Paßwort gefragt und somit muß man es nicht wie bei curlftpfs im Klartext an den Befehl anhängen.

Damit sshsync arbeiten kann, muß ein entfernter Webspace mittels sshfs in den Verzeichnisbaum eingehängt werden, auf das dann sshsync mit der zweiten Pfadangabe zugreift.

In früheren Versionen vor 3.0 benötigte sshsync die Konsolenprogramme "find" (zum auflisten der Dateien), "ls" (für den Datumsstempel), "mkdir" (zum Erzeugen nicht existierender Verzeichnisse), "cp" um die Dateien zu kopieren, "rm" um sie zu entfernen und "rmdir" um leere Verzeichnisse zu entfernen. Ab Version 3.0 braucht es KEINE dieser Programme mehr, da es komplett überarbeitet und quasi neu geschrieben wurde in reinem C++. Dadurch wurde die Geschwindigkeit und Effizienz mit der es arbeitet maßgeblich erhöht.

Zur Arbeitsweise: sshsync überprüft nur, ob im lokalen Verzeichnis neuere Dateien vorhanden sind oder Dateien in einem der beiden Verzeichnisse fehlen. Lokal neuere Dateien oder auf dem entfernten Webspace fehlende Dateien werden nach der Bestätigung für einen Abgleich auf den Webspace kopiert und bei Vorhandensein überschrieben. Fehlende lokale Dateien werden auf dem Webspace gelöscht. In diesem Sinne hat sshsync die Funktion eines mirrors. Der entfernte Webspace wird auf den Stand des lokalen Verzeichnisses gebracht. Die Idee dahinter ist, an einer lokalen Kopie der Webseite zu arbeiten, die Webseite offline zu überprüfen und anschließend mittels sshsync auf dem Webspace bereit stellen. Dabei werden die benötigten Abgleichs-Operationen zur Überprüfung zentriert in der Konsole ausgegeben und erst nach einer Bestätigung durch eine ja/nein-Abfrage ausgeführt. Möchte man eine anderweitig formatierte Ausgabe haben, kann man mittels des Schalters -c die Zeichenanzahl für die Ausgabe in einem Wertebereich von 5 bis 300 frei einstellen. Mit Hilfe des Schalters -y wird die Abfrage ob der Abgleich durchgeführt werden soll übersprungen.

Das Programm steht unter der GPL und darf daher von jedem frei verwendet werden. Geschrieben und getestet wurde es unter Debian GNU/Linux, könnte aber auch auf anderen Linux-Distributionen funktionieren. Für auftretende Fehler, Schäden oder Datenverlust die das Programm verursacht, übernehme ich keinerlei Haftung. Die Benutzung erfolgt auf eigene Gefahr, jedoch ist die Wahrscheinlichkeit, daß nach dem Gebrauch das System nicht mehr funktioniert sehr gering, da das Programm lediglich Dateien kopiert oder löscht und eventuell Ordner anlegt. Bis zu der Ja/Nein-Abfrage wird an den Verzeichnissen auch nichts verändert, somit kann man das Programm auch nur dazu benutzen, um eventuelle Unterschiede in den Verzeichnissen anzeigen zu lassen.

Zum Kompilieren benötigt man den Gnu-C++-Compiler (enthalten in dem Paket build-essential) und kann mittels folgendem Befehl eine ausführbare Datei erstellen:

$ g++ -std=c++20 sshsync.cpp -o sshsync

Die Datei kann man einfach in das Verzeichnis /usr/local/bin kopieren, wodurch der Befehl sshsync ohne Angabe eines Pfades zur Verfügung steht. Zum Download gibts ein komprimiertes tar-Archiv mit dem Quellcode und einer ausführbaren Datei, jeweils für die Debian Distributionen bullseye, bookworm und trixie.


Download

Debian 11 (bullseye) amd64 sshsync3.0-bullseye.tar.gz
Debian 12 (bookworm) amd64 sshsync3.0-bookworm.tar.gz
Debian 13 (trixie) amd64 sshsync3.0-trixie.tar.gz