Osync - A two way local and / or remote sync script with fault tolerance, soft-deletion, resume support and more
Osync is a robust bidirectional file synchronization tool written in bash and based on rsync. It works on local and / or remote directories via ssh tunnels. It's mainly targeted to be launched as cron task, with features turned towards automation among:
- Execution time control
- Fault tolerance with possibility to resume on error
- Soft deletion, on-conflict backups with automatic cleanup
- Alert notifications via email
- Before and /or after time controlled local and / or remote command execution
- File monitor mode
Osync has been successfully tested on CentOS 5.7, 5.8, 5.9 and 5.10, CentOS 6.3 and 6.4, Debian 6.0.7, Linux Mint 14, Ubuntu 12.10, FreeBSD 8.3 and Windows using MSYS environment. Also, some basic tests have been done for Mac OS X.
What's new ?
Osync developpment is now finished :) It's become daily usable. Actually, it's used in production setups.
Well, some features made it since RC2. That means we'll head for an RC3. Documentation for v1.00 is ready.
You can help me by trying osync and reporting back. Get the latest souces at https://github.com/deajan/osync
- 27/05/2014: Just freshly backed RC3 with a lot of fixes.
- 16/02/2014: New documentation uploaded. Heading towards final release.
- 18/11/2013: Osync got two new features: ssh uri support and file monitor mode, also including some bug fixes.
- 02/11/2013: Osync v0.99 RC2 is out. Sync code is stable. This release only contains portability and misc improvements.
- 18/08/2013: Osync v0.99 is now release candidate. It has been tested on about 150GB of real world user files getting changes every day. 100GB of these files get synced over a standard ADSL 1Mbps link (first sync took about twelve days, now syncing changes takes about 2-3 hours).
- 12/08/2013: Osync tested on sync over 100GB of real world user files.
- 04/08/2013: Beta 3 is online (yeah... Beta 2 didn't make it). Tested on a lot of sync tasks.
- 24/07/2013: First beta rolled out. Check Github
How to ?
Well grab the latest sources with the following command
$ git clone https://github.com/deajan/osync
$ chmod +x osync.sh
Additionnaly, you might copy osync.sh executable to /usr/local/bin or any other directory of your choice:
$ cp ./osync.sh /usr/local/bin
Then edit the sync.conf file according to your needs. Basically, just the three lines are important. SYNC_ID, master and slave locations.
Then go for a test run. If you feel confident, you may setup osync as a cron task with parameter "--silent" which will disable on screen messages.
$ osync.sh your_sync.conf --dry --verbose
$ osync.sh your_sync.conf --silent
I'll try to respond to any support query in my spare time.. Feel free to mail me at ozy [at] netpower.fr