Archiv für den Monat: Februar 2015

Shell: Rsync um Verzeichnis auf remote Server zu syncen

Softwarentwicklung lokal. Testen auf Remote-Server. Kein FTP-Zugang. Keine Rechte, um per scp direkt Dateien in das /var/www-Verzeichnis zu kopieren. Was tun?

Man kann per

scp

eine Datei ins Home-Verzeichnis auf dem remote Server kopiert und dann in den Webroot verschieben.

Auch ein Repository (zB Git) ist möglich, aber um zB Debug-Informationen ein- und auszutragen möchte man sich vielleicht die Commits sparen.

Lösung:
Mit Rsync man kopiert den lokalen Ordner auf den Remote-Server (sehr nützlich, wenn man mehrere Dateien abgleichen will).

rsync -purt --exclude=/.git/ /home/hthurat/www/production/ hthurat@remote-server:/home/hthurat/production/

Synchronisiert einen Ordner vom lokalen Server (/home/hthurat/www/production) auf den Remote-Server (remote-server) und dort in das Verzeichnis /home/hthurat/production was wiederum mit einem symbolischen Link in den Webroot zeigt. Dabei werden die Dateien im .git-Ordner (home/hthurat/www/production/.git/) nicht mit synchronisiert.

Statt den Parameter -a anzugeben (weil mit -l auch symbolische Links aktualisiert werden – was nicht gewollt war), werden die Parameter manuell angegeben:
-p = Behält Rechte der Quelldatei bei
-u = Nicht überschreiben, wenn Zieldatei neuer ist
-r = Rekursiv
-t = Zeitstempel der Quelldatei beibehalten

–delete = Löscht auf dem Zielrechner Dateien, die nicht im Quellordner vorhanden sind (War im Beispiel auch nicht gewünscht). Handle with care!