Here are two separate implementations of a quick-and-dirty file-level backup system using shell scripts and rsync. rsync-push - used to back up a system to a remote machine using rsync. Backup is initiated by the machine being backed up. rsync-pull - used to back up a remote system using rsync to the local machine. Backup is initiated by the machine storing the backup data. I use rsync-pull extensively on my personal machines, and used to use rsync-push on my work laptop (when I had one)