Actually, looking more closely, the cp -a might actually work. I never use it since it's a gnuism and you can't be sure you'll have gnu cp on your machine. In general, those options are not available, so you're left with using -r, which doesn't preserve special files and such.
The tar I'm not sure what's wrong with; I just remember it not working in a particular case in the past.
Both scripts I think suffer from potential file naming problems if those files have a " in them or start with a - and so on.
Bruce