Der Nachteil beim Kopieren vieler Daten per scp ist, dass für jede einzelne Datei der Verbindungsaufbau erneut erfolgen muss. Da diese Zeit sich für die Anzahl der Dateien summiert kann dies unter Umständen eine gewissee Zeit dauern.
Daten mit tar uns ssh kopieren
Diese vielen Dateien können wir mit tar zu einem Stream packen und diesen per ssh auf den anderen Server leiten. Das spart dann die Zeit für die einzelnen Verbindungen, da der Verbindungsaufbau nur einmal erfolgt
Dies geschieht wie folgt:
tar -cf - /quellverzeichnis | ssh user@zielserver tar -xvf - -C /zielverzeichnis
So werden Daten an ein entfernten Server mit tar und ssh „geschoben“.
Oder nachfolgend anders herum, die Daten werden vom entfernen Server mit tar und ssh „gezogen“.
ssh user@quellserver tar cf - /quellverzeichnis | tar xvf - -C /zielverzeichnis
Mit den Parametern p(reserve permissions) bleiben die Datei- und Verzeichnis-Rechte erhalten. Weiterhin können wir mit den Parameter z noch die Komprimierung aktivieren.
tar -cpzf - /quellverzeichnis | ssh user@zielserver tar -xvpzf - -C /zielverzeichnis
bzw.
ssh user@quellserver tar cpzf - /quellverzeichnis | tar xvpzf - -C /zielverzeichnis
Fazit
Einfache und vor allem schnelle Möglichkeit viele Daten über ssh auszutauschen.
Es lohnt wie immer ein Blick in die Dokumentation von tar und ssh.