@node Bundles
@cindex bundles
@cindex tapes
@cindex streaming media
@unnumbered Bundles

Usual @command{@ref{nncp-xfer}} command requires filesystem it can
operate on. That presumes random access media storage usage, like hard
drives, USB flash drives and similar. But media like CD-ROM and
especially tape drives are sequential by nature. You can prepare
intermediate directory for recording to CD-ROM disc/tape, but that
requires additional storage and is inconvenient.

Bundles, created with @command{@ref{nncp-bundle}} command are convenient
alternative to ordinary @command{@ref{nncp-xfer}}. Bundle is just a
collection of @ref{Encrypted, encrypted packets}, stream of packets. It
could be sequentially streamed for recording and digested back.

@itemize

@item They do not require intermediate storage before recording on
either CD-ROM or tape drive.
@example
$ nncp-bundle -tx SOMENODE | cdrecord -tao -         # record directly to CD
$ nncp-bundle -tx SOMENODE | dd of=/dev/sa0 bs=10240 # record directly to tape

$ dd if=/dev/cd0 bs=2048 | nncp-bundle -rx  # read directly from CD
$ dd if=/dev/sa0 bs=10240 | nncp-bundle -rx # read directly from tape
@end example

@item They do not require filesystem existence to deal with, simplifying
administration when operating in heterogeneous systems with varying
filesystems. No @command{mount}/@command{umount}, @command{zpool
import}/@command{zpool export} and struggling with file permissions.
@example
$ nncp-bundle -tx SOMENODE | dd of=/dev/da0 bs=1M # record directly to
                                                  # hard/flash drive
$ dd if=/dev/da0 bs=1M | nncp-bundle -rx # read directly from drive
@end example

@item This is the fastest way to record outbound packets for offline
transmission -- sequential write is always faster, when no
metainformation needs to be updated.

@item This is convenient to use with append-only storages, just
sending/appending new bundles.

@item Bundles could be repeatedly broadcasted in one-way transmission.
@ref{Sync, Sync protocol} requires interactive connection, but bundles
can contain mix of various recipients.

@end itemize

@pindex pax
@pindex tar
Technically bundle is valid POSIX.1-2001
@url{https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_01, pax archive}
with directory/files hierarchy identical to that is used in
@command{@ref{nncp-xfer}}: @file{NNCP/RECIPIENT/SENDER/PACKET}.
So bundle can also be created by manual tar-ing of
@command{@ref{nncp-xfer}} resulting directory.
