Over the past few weeks ( after having taken a lot of time to finalize on
the library to use, to implement synchronization ) Riccardo and I
had been working on getting a very basic file synchronization into owncloud.
We have achieved something close :)
What we have:
1. A file synchronization mechanism using using the OMA standard SyncML
protocol, the sync works for text and binary files.
2. When a file is updated , the server creates a copy of the file and
renames the copy with a time stamp appened. This is a rudimentary but useful
, dropbox like merge conflict resolution and version history tool. This came
as a pleasant side effect :) While trying to get merge to work , merge
didn't but the backup
with the time stamp did :)
What we are working on:
1. Send only delta changes when a modification has been made to the files in
2. Merge changes ( I don't think its such a great Idea to do merge in the
3. Right now , when a new client tries to pull in changes ( the user created
a new client on a different or the same client machine )
It doesn't work. But this is a client specific issue . ( Maybe the client
isn't asking for the changes :P ) should be easy to fix.
4. Integrating the authentication of the SyncML library to that of ownCloud.
5. Integrating the datastore used by the library to that of ownCloud.
How to test these:
1. checkout the file_sync_server branch.
2. create a directory /var/www/html/sync and change permissions.
3. get Funambol SDK and build the sample C++ fsync application.
4. Create a directory and put all the files you want to sync.
5. execute Fsync
./fsync -s http://localhost/owncloud/fileSync/ -d <folder name where the
files to be synced are kept> -u <dummy username> -p <dummy password> -v
and Viola ! sync works :)
Please do test this out and let me know about your comments , suggestions.