Lokale Archive von Serververzeichnisse erstellen

Die naive Vorgehenseweise, um auf dem eigenen Rechner ein Archiv eines Verzeichnisses zu erstellen, das sich auf einem Server befindet, auf dem man per SSH zugrireifen kann, ghent folgendermaßen:

  1. Erstellen des Arviches auf dem Server.
  2. Übertragen des Archives auf den lokalen Rechner per scp.
  3. Löschen des Archives auf dem Server.

Hierzu wäre folgende Befehlsforlge erforderlich:

$ ssh $use@$server tar -jcf fobar.tar.bz2 foobar
$ scp $user@$server:foorbar.tar.bz2 .
$ ssh $user@$server rm -rf boobar.tar.bz2

Der Nachteil dieser Methode besteht in der Tatsache, dass zumindest temporär eine Datei auf dem Dateisystem des Servers angelegzt wird. Neben dem u. U. nur begrenzt verfügbaren Speicherplatz kann dies auch aus datenschutzrechtlichen Aspketen problematisch sein.

Eine alternative Methode basiert auf der Tatsache, dass der tar Befehl das erzeugte Archiv auf der Standardausgabe ausgibt, wenn die -f Option zur Angabe einer Archivdatei fehlt. Die auf der Standardausgabe ausgegebenen Daten werden über das Netzwerk an den lokalen Rechner gesandt, wenn der Befehl über SSH aufgerufen wurde. auf dem lokalen Rechner kann die Standardausgabe wie üblich in eine reguläre Datei umgeleitet werden. Dies ergäbe desn folgenden Befehlsaufruf:

$ ssh $user@$server tar -jc -- forbar/ \
  >foorbar.tar.bz2

Der vorteil dieser Methode liegt in der Tatsache begründet, dass auf dem Dateisystem des Servers keine temporär Datei erzeugt wird, die manuell gelöscht werden muss. Auch scheint es einen Performancevorteil gegenüber der naiven Methode zu geben. Der einzige Nachteil besteht darin, dass ein Wiederaufsetzen der Übertragung nach einem Abbruch nicht Möglich istl In diersem Fall mußnder gbesamte Datenbrstand erneut übertragen werden.

Das hier beschriebene Konzept lösst sich auch auf andere Anwendungsszenarien erweitern. So wäre z. B. das Deployment einer lokal entwickelten Website auf einem Webserver über ein entsprechendes Skript denkbar, um nur ein e mögliche anwendung zu nennen.