Netcat Tar Pipe

Lets face it, sometimes we need to move massive amounts of data between servers. wouldn't it be great if it wasn't so darn slow? In some cases rsync would do the job just fine, but it gets slowed down when it has to do checksum checks before and after a file transfer. Sure you could turn off the checksum checks but you would still be limited by rsync.

Enter netcat tar pipe

we can use a combination of netcat, tar, and a pipe to blast data from one server to the other.

While copying files from an old NAS to a new NAS I was seeing the following transfer speeds.

Method Transfer Rate
rsync 5mb/s
netcat tar pipe 71mb/s

How to Run it

Receiver

On the receiving machine start a listener in the directory where files will be received.

cd /path/to/destination/directory
ncat -l -p 7000 | tar -xpf -

Sender

On the sending machine start a transfer to the listening receiver.

cd /path/to/source/directory
tar -cf - * | ncat <hostname_of_receiver> 7000

Synology

Synology NAS's do not have netcat installed by default and you will need to install the DiagnosisTool to get access to the binary. Run the following command on your synology machine to install netcat.

sudo synogear install