bashsynchronization

How to keep two folders automatically synchronized?


I would like to have a synchronized copy of one folder with all its subtree.

It should work automatically in this way: whenever I create, modify, or delete stuff from the original folder those changes should be automatically applied to the sync-folder.

Which is the best approach to this task?

BTW: I'm on Ubuntu 12.04

Final goal is to have a separated real-time backup copy, without the use of symlinks or mount. I used Ubuntu One to synchronize data between my computers, and after a while something went wrong and all my data was lost during a synchronization.

So I thought to add a step further to keep a backup copy of my data:

Inspired by lanzz's comments, another idea could be to run rsync at startup to backup the content of a folder under Ubuntu One, and start Ubuntu One only after rsync is completed.

What do you think about that? How to know when rsync ends?


Solution

  • You can use inotifywait (with the modify,create,delete,move flags enabled) and rsync.

    while inotifywait -r -e modify,create,delete,move /directory; do
        rsync -avz /directory /target
    done
    

    If you don't have inotifywait on your system, run sudo apt-get install inotify-tools