I implemented a simple personal backup solution a long time ago which is (essentially) what Time Machine implements now (without the eye-candy application, of course). It's not that hard, it only requires hard-linking, which the OS X kernel didn't support, so they added it.
Steps:
First run:
* Rsync data from source drive to backup drive (can be done over network, ssh, whatever). We'll call this backup "0"
Second run:
* On the backup drive, copy the last backup folder (backup "0") to a new backup folder (backup "1"), using hardlinks. Hardlink copies don't take any additional space, since they're pointing to the original resource on the disk (folders do add some negligible space).
* Rsync data from source drive to backup drive (backup "1"). Rsync, of course, only updates what's new/changed.
Repeat, saving as far back as you'd like, and deleting old backups if the drive is full, after N backups, or so many days. Now you've got an easy incremental backup bash script.
Hardlinks are beautiful, because they don't add extra space, and once all the hardlinks to a resource are deleted the resource becomes free space. This isn't an enterprise-level backup solution, but it's a great quick-and-dirty way to do incremental backups, and is exactly how Time Machine works.
One way this isn't exactly like Time Machine: since it doesn't hook into the FSEvents journal of file system modifications, rsync has to check the modified dates of every file in the backup set. With FSEvents, Time Machine knows what's changed (or at least which folders contain changed items) and can deal with only those.
Steps: First run:
* Rsync data from source drive to backup drive (can be done over network, ssh, whatever). We'll call this backup "0"
Second run:
* On the backup drive, copy the last backup folder (backup "0") to a new backup folder (backup "1"), using hardlinks. Hardlink copies don't take any additional space, since they're pointing to the original resource on the disk (folders do add some negligible space).
* Rsync data from source drive to backup drive (backup "1"). Rsync, of course, only updates what's new/changed.
Repeat, saving as far back as you'd like, and deleting old backups if the drive is full, after N backups, or so many days. Now you've got an easy incremental backup bash script.
Hardlinks are beautiful, because they don't add extra space, and once all the hardlinks to a resource are deleted the resource becomes free space. This isn't an enterprise-level backup solution, but it's a great quick-and-dirty way to do incremental backups, and is exactly how Time Machine works.