Você pode fazer tudo isso em dois comandos, um no servidor, um no cliente usando tar, gzip, tee, nc.
No servidor:
tar cf - dirname/ | gzip -c - |tee dirname.tar.gz | nc -l 3333
No cliente
nc serveraddress 3333 > dirname.tar.gz
nc significa netcat, uma ferramenta útil que se comporta como cat para uso de rede.
nc -l 3333
criará um soquete de escuta na porta local 3333 e transmitirá o conteúdo de stdin para quem já se conectar a ele.
nc serveraddress 3333
estabelecerá uma conexão tcp para o servidor na porta 3333 e transmitirá em stdout tudo o que receberá na conexão do soquete.
Esta é uma maneira muito fácil de transferir arquivos em diferentes máquinas enquanto executa vários encadeamentos de comandos como tar / gzip / tee ....