rsync when working on both sides...

Christian Schneider christian.schneider at
Sun Oct 30 15:40:45 GMT 2005

Hi rsync devs and users,

I want to use rsync to synchronize home directories on two PCs. It works 
fine if I start rsync after working on a host each time I leave. But 
instead of operating modes "host1 -> host2" and "host2 -> host1" I would 
like to have a mode "host1 <-> host2" to allow synchronizing at any time
-> Scenario:
- on host1 files A,B have been created, C has been deleted
- on host2 file D has been modified, E deleted
Desired result after invoking rsync:
- host1 and host2 have files C,E removed and A,B,D updated
Is there an rsync switch supporting this?

As I have not found such a switch I'm using the script at the end of 
this mail - which seems to work fine (provided that the created file 
'syncedfiles.local' is available).
Any obvious problems?

Best regards,
Christian Schneider

-- skript following --

REMOTE=username at host::home

echo "*** delete files at remote side that were deleted locally (since 
last find) ***"
#ATTENTION: this deletes even modified files on the remote side!
rsync -rtzogpu --progress --exclude="syncedfiles.*" 
--include-from=syncedfiles.local --filter "- **" --delete 
--modify-window=1 --existing $DIR/$NAME $REMOTE

echo "*** delete files at local side that were deleted remotely (since 
last find) ***"
#ATTENTION: this deletes even modified files on the local side!
rsync -rtzogpu --progress --exclude="syncedfiles.*" 
--include-from=syncedfiles.local --filter "- **" --delete 
--modify-window=1 --existing $REMOTE $DIR

echo "*** copy new file to remote side ***"
rsync -rtzogpu --progress --exclude="syncedfiles.*" --filter "+ **" 
--modify-window=1 $DIR/$NAME $REMOTE

echo "*** copy new file from remote side ***"
rsync -rtzogpu --progress --exclude="syncedfiles.*" --filter "+ **" 
--modify-window=1 $REMOTE $DIR

cd $DIR
find ./$NAME | sed -e 's/^.//' | grep -v syncedfiles > syncedfiles.local

More information about the rsync mailing list