You can make a view of the FAT filesystem with POSIX semantics, including supporting file names with any character other than `/` or a null byte. POSIXovl is a relatively recent FUSE filesystem for this.
mkdir backup-fat
mount.posixovl -S /media/sdb1 backup-fat
rsync -au /source backup-fat/target
Characters in file names that VFAT doesn't accept are encoded as `%(XX)` where `XX` are hexadecimal digits. As of POSIXovl 1.2.20120215, beware that a file name like `%(3A)` is encoded as itself, and will be decoded as `:`, so there is a risk of collision if you have file names containing substrings of the form `%(XX)`.
Beware that POSIXovl does not cope with file names that are too long. If the encoded name doesn't fit in 255 characters, the file can't be stored.
POSIXovl stores unix permissions and ownership in files called `.pxovl.FILENAME`.