rsync --delete is dangerous!
I hosed my entire home directory on this server last night with an incorrect rsync command. I tried syncing my svn repository to the server like this:
rsync -az -e ssh --delete /var/svn/repos/ servername:/home/username/
The problem is that I had an extra slash on the end of "/var/svn/repos/". Without the extra slash, it would create a directory called repos inside servername:/home/username and sync it with /var/svn/repos. With the slash, it syncs the contents of "/var/svn/repos" with the contents of servername:/home/username, thus causing all files in servername:/home/username to be deleted because of the --deleted command.
What I could have done instead is create a directory on the remote server called repos and then rsync like this (actually you don't need to create repos first):
rsync -az -e ssh --delete /var/svn/repos/ servername:/home/username/repos
Or I could have done this:
rsync -az -e ssh --delete /var/svn/repos servername:/home/username
The last command will create a directory called repos in servername:/home/username and it will sync it but not delete anything in servername:/home/username. Add a trailing slah to /var/svn/repos and it will!
Luckily I had a nightly backup of my entire home directory on my local server's external backup drive. I was worried because although I make these nightly backups I haven't actually inspected them in a while. Fortunately everything was intact.