It wouldn't hurt to just run it and see what happens. It looks all right, but here are a few minor suggestions:
Rather than test whether /media/3tb is mounted, you could test whether /media/3tb/.sysbak exists.
You could use newlines instead of semicolons. It's more readable, or am I missing the reason for semicolons?
You don't need the mkdir. You can get rsync to create the directory with:
Code:
rsync -aAX --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home"} / /media/3tb/.sysbak/$(date +'%d%b%Y')
date +%F will be useful if you ever have to sort backup sets by name (alphabetically) rather than by timestamp. Then, for example, a simple 'ls' would list the backup sets in chronological order.
You don't need the else block, unless you plan to add functionality there later.
When backing up a live system, rsync is likely to generate non-fatal error messages as files are modified or deleted while rsync is running. Redirect stderr to a logfile if you want to examine the error messages, or to /dev/null if you want to ignore them.
If you plan to back up often, consider using the rsync --link-dest option. It will save a lot of disk space by using hardlinks instead of duplicating unchanged files. It requires a destination filesystem which supports hardlinks. For optimum efficiency of disk space, the script would need to identify the most recent backup which ran to completion (that is, which was not interrupted), and use that as the --link-dest directory.