The zip package supports bzip2 compression and --split.
Will bzip2 meet your requirements?
-s splitsize
--split-size splitsize
Enable creating a split archive and set the split size. A split archive is an archive that could be split over many files. As the
archive is created, if the size of the archive reaches the specified
split size, that split is closed and the next split opened.
...
Split size is a number optionally followed by a multiplier. Currently the number must be an integer. The multiplier can currently
be one of k (kilobytes), m (megabytes), g (gigabytes), or t
(terabytes). As 64k is the minimum split size, numbers without
multipliers default to megabytes. For example, to create a split
archive called foo with the contents of the bar directory with splits
of 670 MB that might be useful for burning on CDs, the command:
zip -s 670m -r foo bar
could be used.
To ensure data integrity, rsync with checksum verification. It's much slower, but will calculate checksum on both sides of the transfer.
-c, --checksum
This changes the way rsync checks if the files have been changed and are in need of a transfer. Without this option, rsync uses a
lqquick checkrq that (by default) checks if each file's size and time
of last modification match between the sender and receiver. This
option changes this to compare a 128-bit checksum for each file that
has a matching size. Generating the checksums means that both sides
will expend a lot of disk I/O reading all the data in the files in the
transfer (and this is prior to any reading that will be done to
transfer changed files), so this can slow things down significantly.
From: man zip, man rsync