Jump to content



Photo

Sync folders across two remote servers or machines


  • Please log in to reply
3 replies to this topic

#1 zoheb

zoheb

    Neowinian

  • Joined: 02-January 10
  • Location: haLLuNicaTeD pAradISe

Posted 04 October 2012 - 17:56

Can someone help me creating a script that will sync the folders between 2 servers such that if we delete any file on either of the machine, the other should reflect the same.

I will be using a cronjob to run the script daily.

rsync -parv user@server1:source/ user@server2:destination/
The above command will only sync the source folder on server1 to destination folder on server2.

Now on any given day if I delete a huge file from destination folder (as I dont need it anymore) and if the cronjob gets executed, the huge file in source folder will again be copied over to destination.

I need to avoid this. In the above case, the script should delete the huge file from source folder.

I think unison would be helpful here but how to integrate it within a bash script.

Else, how can we do it with rsync itself?

Thanks in advance. .


#2 cybertimber2008

cybertimber2008

    Neowinian Senior

  • Joined: 02-December 08

Posted 04 October 2012 - 18:07

If I understood you right, you want the --delete option.

http://superuser.com...-delete-options
--del				   an alias for --delete-during
--delete			    delete extraneous files from dest dirs
--delete-before		 receiver deletes before transfer (default)
--delete-during		 receiver deletes during xfer, not before
--delete-delay		  find deletions during, delete after
--delete-after		  receiver deletes after transfer, not before
--delete-excluded	   also delete excluded files from dest dirs


#3 OP zoheb

zoheb

    Neowinian

  • Joined: 02-January 10
  • Location: haLLuNicaTeD pAradISe

Posted 04 October 2012 - 18:41

If I understood you right, you want the --delete option.

http://superuser.com...-delete-options

--del				   an alias for --delete-during
--delete				delete extraneous files from dest dirs
--delete-before		 receiver deletes before transfer (default)
--delete-during		 receiver deletes during xfer, not before
--delete-delay		  find deletions during, delete after
--delete-after		  receiver deletes after transfer, not before
--delete-excluded	   also delete excluded files from dest dirs


That was nice. . .
the suitable option seems to be --delete >>>> Deletes files in the destination directory if they don't exist in the source directory. So the 1st half of the problem is solved.

But what if I want to delete a file in the source directory if it does not exists in the destination directory?

#4 cybertimber2008

cybertimber2008

    Neowinian Senior

  • Joined: 02-December 08

Posted 05 October 2012 - 16:09

If you delete a file in the source that doesn't exist in the destination, you would just delete it as normal. It was never rsync-ed, and therefore there is no duplicate.