Machine 1 (Machine that sends the directory)
tar -czv $directory/* > /dev/tcp/$ip/$port
Machine 2 (Machine that received the directory)
nc -lp $port | tar -xzv
$directory = The directory to send.
$ip = The IP of Machine 2.
$port = A port available for binding on Machine 2.
Using this method $directory will be copied and reconstructed verbatim on Machine 2, regardless of size or complexity.
No hassle, no authentication, no need for even nc on Machine 1. Just bash and tar.
This works because tar doesn't need to write to a file. This essentially tars and compresses the directory on one end,
pipes it over the network, then uncompresses and extracts it on the other end.