Um das Verzeichnis foo vom eigenen Rechner auf dem Rechner kermit als Unterverzeichnis von /bar zu speichern benutzt man den folgenden Befehl:
tar cpSf - foo | ssh kermit "cd /bar && tar xpSvf -"
Wie man sieht, ähnelt der Aufruf sehr dem Befehl zum kopieren auf dem lokalen Rechner, lediglich das „ssh kermit“ ist neu (und die Klammern brauchen wir hier nicht). Ich gehe hier davon aus, dass der User des lokalen Rechners auch auf dem Rechner kermit bekannt ist. Soll auf kermit ein anderer Account, z.B. klaus, verwendet werden, schreibt man einfach „ssh klaus@kermit“. Der User muss auf jeden Fall ausreichende Rechte im Zielverzeichnis haben. Da ein Ziel ist, die Rechte beizubehalten, sollte das root sein.
Man kann tar die Daten auch komprimieren lassen und bei geringer Bandbreite das Ganze somit beschleunigen:
tar zcpSf - foo | ssh kermit "cd /bar && tar zxpSvf -"
Man kann das Ganze auch umkehren, also Verzeichnisse des entfernten Rechners auf den lokalen kopieren:
ssh kermit tar cSpf - /foo | (cd /bar && tar xpSvf -)
kopiert das Verzeichnis /foo von kermit auf dem lokalen Rechner ins Verzeichnis /bar.
Man kann dem ersten tar-Befehl übrigens auch mehrere Verzeichnisse übergeben. Das eignet sich hervoragend für ein einfaches Backup, insbesondere zusammen mit gzip:
ssh kermit tar cSpf - /foo /bar | gzip -f9 > kermit_backup.tgz
Das sichert die Verzeichnisse /foo und /bar des Rechners kermit als komprimiertes Tar-Archiv in der Datei kermit_backup.tgz auf dem Lokalen Rechner.
Ich mache so täglich Sicherungen von wichtigen Verzeichnissen meiner Server.
Auch hier kann man tar die Komprimierung übernehmen lassen:
ssh kermit tar zcSpf - /foo /bar > kermit_backup.tgz
Diese Variante ist schneller, die andere komprimiert dafür geringfügig besser.
Pingback: Komplette Verzeichnisbäume verschieben « romeofox blog
Pingback: Tar-Archive vergleichen | romeofox blog