(this started as a comment on OnoeOfOne's answer, but grew too long for that...)
I use an
cp -al method similar to that show in http://www.mikerubel.org/computers/rsync_snapshots/ (that page was my original crib sheet some time in 2005, and I've not modified things an awful lot since) both for my personal backups and for managing the online+onsite and online+offite backups at work.
How much space this takes depends on the balance of sizes and how often files are changed and deleted. For us, keeping daily snapshots for over a year this way doesn't take much more space than three full copies of the data, as most of our files on the general network shares are not modified or removed often. In fact for many of the snapshots the directory structure takes more space than the data in changed files.
One thing to be wary of is that because each copy of the same version of a file is in fact the same data, on-disk corruption could kill the file in all your snapshots in one fell swoop, so there is still a case for keeping multiple copies. We mitigate this by having multiple copies on different machines and all the machines using RAID1 to protect against certain possible physical problems. Another way to address this if you only have one online backup location is to actually keep two copies and sync them individually, or just force a full refresh occasionally (say, once a month or once a week) so you end up with groups of snapshots: i.e. for a monthly forced refresh-all all the identical files in snapshots for January are the same data block, as are they in February, but there are at least two copies of the actual data if it existed in both months.