If you're doing a naive backup (single copy, overwriting all data) then there's no way of achieving what you want -- an attacker can always "backup" a pile of empty files (or an empty file set) which will result in all your data going bye-bye. So, I'm assuming here that you're doing proper archival backups, and you're monitoring your backups well enough that any attempts to eradicate the backup by sending an empty backup set will be detected before any permanent damage is done.
If your rsync-over-(presumably)-SSH uses a forced command to run
rsync on the destination, then you're about as secure from deletion as you can be. Since you only want to run a specific
rsync command, you can hardcode all the arguments and then the only thing it can do is write new data. Archiving is simple enough by backing up to a new tree each time and associating unchanged files with the previous backup using hardlinks, which saves space and transfer time.
The other way to go is to use pull backups, where the backup server initiates and manages the
rsync operation -- this means that the client machine doesn't even have the ability to run a restricted rsync command, which means the attacker has no power to delete files.
This all assumes that your backup server is secure. If the attacker can get access to it via another means, you're boned regardless of what you do.