I use multiple machines (a desktop PC and a laptop), and I'm looking for a way to keep the files I'm working on synchronized between all machines. The solution must meet these requirements:
- Works on both Windows and Linux
- Can be configured to transparently synchronize an existing folder structure
- Allows access to the files even when no internet connection is available
- Allows access to the files during the synchronization process
- Synchronizes files without manual invocation
- Must store files on a user-controlled server (ideally via SSH) and not someone else's "Cloud"
What would also be nice to have, but is not strictly necessary for me:
- File metadata synchronization (permissions + modification time in particular)
- Free/Libre Software
Ideally, I'd boot up one machine, work on stuff, and when I boot up another box, all my changes are there as if I had made them on the box I just started.
The solution I use right now is rather limited. I wrote a simple shell script that invokes rsync to copy all files to or from a central server via SSH. This has a few drawbacks:
- If I forget to push my changes to the server, they are unavailable on all other machines.
- If I forget to pull changes from the server, the next pull will overwrite all changes I made locally.
- It doesn't work on Windows without installing a huge package like Cygwin.
I also explored ownCloud, but it has some disadvantages as well.
- Requires a full webserver stack with PHP and a SQL database
- On Windows, it would lock files during the synchronization. Particularly annoying while writing or compiling code in short intervals
- On Linux, it used some virtual filesystem capabilities that could only be easily accessed from a graphical file explorer