I don't really have the attention span to read your script at this time (haven't slept in a couple of days), however, for incremental backups, why not use rsync instead of tar?
For example:
Code:
rsync -azvr /path/to/source /path/to/backup
Using that command, you won't re-backup every single file and directory. You'll only make up the difference.
In my experience, rsync works great for everything except for virtual machines and other [extreme] large files.