Rsync wiederentdeckt

Rsync wiederentdeckt

Tags:

Ja, ich habe rsync 1 wiederentdeckt. Einfach aus dem Umstand heraus eine Lösung zu finden, um den Arbeitsfluss mit Jekyll zu vereinfachen.

Da ich mich für Jekyll im Terminal bewege, war es eigentlich naheliegend, ebenfalls ein Werkzeug wie rsync zu nutzen, um Aktualisierungen oder neue Artikel aus dem Terminal heraus zusätzlich per SSH auf den Webspace zu transportieren, ohne gleich wieder ein FTP-Programm starten zu müssen und manuell alles zu synchronisieren.

Ich weis jetzt nicht wie es bei anderen Anbietern aussieht, aber uberspace.de unterstützt von Haus aus eine SSH-Verbindung für etliche Konfigurationen im eigenen Web-Space. Mittlerweile nutze ich ein Skript, um die ganze rsync/ssh-Eingabe zu vereinfachen.

Im Grunde steht im Skript nichts anderes als ein Einzeiler:

rsync -avzh --delete --exclude=.DS_Store
/Volumes/Daten/home/bademeister/Projekte/jekyll/_site/
-e "ssh -l BENUTZER -F
/Volumes/daten/home/bademeister/.ssh/uberspace_fm/config"
server.uberspace.de:/var/www/virtual/BENUTZER/html/

Von einer Synchronisation kann eigentlich nicht gesprochen werden, denn der Abgleich erfolgt ausschließlich in eine Richtung, im Ziel. Die Parameter hierzu:

  • -avzh : Ergeben die Steurung für rsync. Details bitte in den man-Pages nachlesen.
  • --delete : rundet die Synchronisation ab. Im Ziel wird nur das gelöscht, was in der Quelle auch nicht mehr vorliegt. So gibt es immer eine 1:1 Kopie.
  • --exclude=.DS_Store : Nimmt Dateien aus dem Abgleich heraus. Mac OS X legt generell solche Verwaltungsdaten an, die im Ziel nicht unbedingt gebraucht werden.
  • /home/bademeister/projekte/jekyll/_site/ : Ist die Quell-Angabe für rsync. In meinem Beispiel alle Dateien und (Unter-)Verzeichnisse, die durch Jekyll generiert wurden.
  • -e "ssh -l BENUTZER -F /Volumes/daten/home/bademeister/.ssh/uberspace.de/config" BENUTZER.server.uberspace.de:/var/www/virtual/BENUTZER/html/ : Mit "-e" wird der Anstoß eines externen Programms gestartet. In diesem fall eine verschlüsselte Verbindung via SSH zum Benutzer (-l Benutzer) der Wahl. Da ich unterschiedliche SSH-Verbindungen nutze, gibt es entsprechende Konfigurationsdateien, die ich hier mit dem Parameter "-F" mit angebe. Dann folgt das Zielverzeichnis mit entsprechender Serveradresse vorangestellt.

Das Beispiel oben bezieht sich auf einen uberspace.de-Dialog über das Internet. Mittlerweile nutze ich rsync für meine eigene lokale Sicherung und experimentiere mit einem Update zu "meineSicherung" [^fnrs_2] (ebenfalls ein Skript) von mir. Im Prinzip sieht die gesamte Syntax für eine einfache Sicherung auf eine externe Festplatte wie folgt aus:

rsync -avzh --delete /users/bademeister/
/Volumes/Externe_Festplatte/Sicherung/

Noch ein kleiner Hinweis. Ich habe keine Zickereien erlebt, wenn die Pfadangaben komplett ausgeschrieben wurden. Besonders die Angabe zum Home-Verzeichnis mit dem Tilde-Symbol "~" hat rsync nicht gemocht.