drachefly wrote:psst… use a run-length encoder first.
Backreferences are just as good as run-length encoding, the limit here is that common implementations (zip/gzip/deflate etc) have a fixed bit-size for the "length" parameter. For example, a backreference in DEFLATE is at least 24 bits long but has just 8 bits for length. The maximum compression factor is 1:86 = ~1.1%.
bzip2 should produce great results here. The first three steps (initial RLE, burrow-wheeler transform, MTF) are counterproductive in this case, but you still end up with a string with reasonably long runs - an input of ~43MB will end up as 5 different runs instead of just one.
The following RLE has no limit on the run length, except the block size. Including block headers, the end result should be a compression ratio about 1:1.000.000, but on 200TB that's still 200MB. (As Ken has already figured out, the blocks do repeat, so compress recursively.)
/edit: actually, screw RLE. All you need is a good entropy coder, because the entropy of 200 trillion '9's followed by 'eof' is just around ~49 bit, plus header.