dd bs=1 count=1234567 will copy 1234567 bytes and then stop, but it's slow.
I can't seem to think of a faster command that also works in the presence of short reads and blocking. There is ghead -c from coreutils in ports, but this should be possible in base, no? Max