## Bundles ¶

Usual `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 `nncp-bundle` command are convenient alternative to ordinary `nncp-xfer`. Bundle is just a collection of encrypted packets, stream of packets. It could be sequentially streamed for recording and digested back.

- They do not require intermediate storage before recording on either CD-ROM or tape drive.

      $ 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

- They do not require filesystem existence to deal with, simplifying administration when operating in heterogeneous systems with varying filesystems. No `mount`/`umount`, `zpool import`/`zpool export` and struggling with file permissions.

      $ 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

- This is the fastest way to record outbound packets for offline transmission – sequential write is always faster, when no metainformation needs to be updated.
- This is convenient to use with append-only storages, just sending/appending new bundles.
- Bundles could be repeatedly broadcasted in one-way transmission. Sync protocol requires interactive connection, but bundles can contain mix of various recipients.

Technically bundle is valid POSIX.1-2001 pax archive with directory/files hierarchy identical to that is used in `nncp-xfer`: `NNCP/RECIPIENT/SENDER/PACKET`. So bundle can also be created by manual tar-ing of `nncp-xfer` resulting directory.