rsync can do this and it (or a port) is available for all platforms you listed.
- Windows XP and Windows 7 can use cwRsync
- Ubuntu comes with rsync preinstalled, if for some reason it didn't there are links on that page to assist you with it's installation and dependencies.
Since you'd like this to be easy for other's, I'd suggest simply making shares and having scheduled jobs sync at the interval of your choice(Scheduled tasks on Windows, Cron on Ubuntu Linux) so the process is invisible to your users. You can use
cp with the
-u switch on Ubuntu to copy only newer and non-existent files. On Windows, you can use XCOPY with the
/E /I /H /Y and
/Z switches. Examples:
cp -u /home/john/stuff/* //Winshare/somefolder
and for Windows (batch, you'll probably want this to run hidden to check out this question):
XCOPY /E /I /H /Y /Z C:\Source D:\Ubuntu\Dest
You will need Samba installed on Ubuntu for this, and you'll need to make shares on the Windows machines. Additionally due to your brother's laptop being moved on occasion, you will need a way (you could write a small script) to remove the cron entry which he will need to run before he moves his laptop. Something as simple as
crontab -r will be fine for a script called
reconnect.sh could be
crontab /path/to/premadetab.txt. Within
premadetab.txt would simply be your entry specifying how often to sync. If you are unfamiliar with cron, you can use a crontab generator.