$ nncp-file [options] [-chunked INT] SRC NODE:[DST]

Send SRC file to remote NODE. DST specifies destination file name in remote’s incoming directory. If this file already exists there, then counter will be appended to it.

This command queues file in spool directory immediately (through the temporary file of course) – so pay attention that sending 2 GiB file will create 2 GiB outbound encrypted packet.

If SRC equals to -, then create an encrypted temporary file and copy everything taken from stdin to it and use for outbound packet creation. Pay attention that if you want to send 1 GiB of data taken from stdin, then you have to have more than 2 GiB of disk space for that temporary file and resulting encrypted packet. You can control where temporary file will be stored using TMPDIR environment variable. Encryption is performed in AEAD mode with ChaCha20-Poly1305 algorithms. Data is splitted on 128 KiB blocks. Each block is encrypted with increasing nonce counter.

If SRC points to directory, then pax archive will be created on the fly with directory contents and destination filename .tar appended. It won’t contain any entities metainformation, but modification time with the names. UID/GID are set to zero. Directories have 777 permissions, files have 666, for being friendly with umask. Also each entity will have comment like Autogenerated by NNCP version X.Y.Z built with goXXX.

If -chunked is specified, then source file will be split on chunks. INT is the desired chunk size in KiBs. This mode is more CPU hungry. Pay attention that chunk is saved in spool directory immediately and it is not deleted if any error occurs. -minsize option is applied per each chunk. Do not forget about possible ZFS deduplication issues. Zero -chunked disables chunked transmission.

If notification is enabled on the remote side for file transmissions, then it will sent simple letter after successful file receiving.