It is nearly impossible to support bi-directional replication over any distance. If you have a copy of a file on both sides of the replication, and both are written to at the same time, which side's writes should be saved, and which side's should be overwritten?
Bi-directional replication can be performed in some replicated databases, where individual transactions can be controlled, but I would be very careful about implementing that feature. If I needed it, I would test it very carefully before using it in production.
Some organizations are content to have a dataset at site A that is replicated to site B, and then a second, independent dataset at site B that is replicated to site A. That arrangement is fine, since each dataset will only be written to by one side at a time.
This was first published in June 2005