Andreas-Loibl.de Linux :: Tipps und Tricks
Hintergrundbild

Tools:Netcat verwenden

Problem

Oft möchte man ein Verzeichnis von einem Rechner auf einen anderen kopieren. Wenn es schon Teile des Verzeichnisses lokal gibt verwendet man dazu am besten rsync. Ansonsten macht man es normalerweise so:
user@local:~$ ssh host
user@host:~$ tar cfz junk.tar.gz bigdir
user@host:~$ logout
user@local:~$ scp host:junk.tar.gz .
user@local:~$ tar xvfz junk.tar.gz
Das ist aber aufwendig...

Lösung

Verwendung von Netcat und einer Pipe übers Netzwerk
user@host:~$ tar cvf - bigdir | nc -l -p 10999
user@local:~$ nc host 10999 | tar xvf -

Netcat liest Hostseitig von stdin und wartet auf Verbindungen (-l, listen) auf Port (-p) 10999. Der Clientseitige Netcat verbindet sich an diesen Port und empfängt alle Daten vom Host und schreibt diese dann auf stdout.

Netcat hält die Verbindung üblicherweis offen, auch wenn sich der tar beendet. Um netcat automaticsch zu beenden, wenn eine bestimmte Zeit keine Daten über das Netz kommen, verwendet man die Option -q <sekunden>.