ncp - a fast file copy tool for LANs

Download it from http://dl.fefe.de/ncp-1.2.4.tar.bz2 [pgp sig]! The current version is 1.2.4. Recent changes: switch to libowfat

Good news: I got an email from Ripclaw from Rock Linux who told me that they are going to integrate ncp.

Please note that on recent IPv6 implementations, link-local addresses are not valid without specifying an interface, so you can't npoll with a link-local address on the command line. Standard npush/npoll now works with link-local addresses, though. Due to Linux 2.4.0test brokenness, you currently can't npoll from the same machine that runs npush.

Since ncp is based on libdjb, it features full IPv6 support and the DNS resolver is built in, i.e. no more security problems because of lame libc functions.

I also provide a statically linked x86 Linux binary [sig] compressed with upx which only weighs in at ~20k. I shrunk the binary with diet libc.

npush will now use IPv6 and IPv4 multicast on the multicast groups ff02::6e63:7030 (6e63:7030 == 'ncp0') and 224.110.99.112 (110.99.112 == 'ncp'). If both methods fail, npush will resort to the broadcast packets used by previous versions. You can force the broadcast method by passing "-b" to npush so that previous npoll versions can see the announcements.

"ncp" is a utility for copying files in a LAN. It has absolutely no security or integrity checking, no throttling, no features, except one: you don't have to type the coordinates of your peer.

Please note that the DNS resolver does not use /etc/hosts (as that would not work with IPv6 anyway), so you should have a properly configured DNS server.

Basically it works like this:

  1. You and your buddy want to play Quake
  2. Your buddy has a level that you don't have
  3. He types npush filename and waits. npush sends out UDP announcement packets proclaiming that someone wants to send something
  4. You type npoll. npoll waits until it sees one of these packets
  5. The files are copied with tar over a TCP socket, so permissions and file dates (and if you are root, owners) are preserved.

There are other usage modes. You can also use it like this:

  peer1$ ncp
                           peer2$ ncp peer1 file1 file2 file3

or like this:

  peer1$ npush file1
                           peer2$ npoll peer1