Dropbox, ubuntuOne,... are application that we often heard. I used them to sync my documents. I found them not mutch customizable, unsecure, and I didn't have my hand on the data.
And I would like to keep my data.
I had an other request : having the same configuration between my laptop and my fixed PC with Ubuntu. So finally I have decided to write a Python script to perform my wishes with my private server.
The script uses the application unison to sync two directories inside a SSH tunnel. It's like two rsync commands.
To detect modifications on a file, the script is linked with iNotify service from Python. So after saving or creating a file in my documents, the script launchs the unison command. Simple but efficiency !
Save and mirrors
Each modification on a file is saved. I can restore one easily. You can chose the amount of time for keeping a backup file. A file is upload on my private server, and also write on a second hard disk. So finally, I have a backup file, and a mirror file. My documents are used on two computers, so I have also a version on the other computer. No trouble !
All my personnal documents are encrypted on client side, with encfs. My server can't read my data. Data transmission is used in SSH, so I use the ssh key system to grant access.
My script configuration is designed to sync also SublimeText, Eclipse, Android SDK, and other application settings.
Watching and Prevent
Maybe in the futur, Google decide to remove your access to your email. For that, I have a script that download all emails from Gmail each half an hour. Just in case :)