Benjamin C. Pierce

What is a File Synchronizer?

Mobile computing devices intended for disconnected operation, such as laptops and personal organizers, must employ optimistic replication strategies for user files. Unlike traditional distributed systems, such devices do not attempt to present a ``single filesystem'' semantics: users are aware that their filesystems are replicated, and that updates to one replica will not be seen in another until some synchronization point is reached (often under the user's explicit control). A variety of tools, collectively called file synchronizers, support this mode of operation.

Unfortunately, present-day synchronizers seldom give the user enough information to predict how they will behave under all circumstances. Simple slogans like ``Non-conflicting updates are propagated to other replicas'' ignore numerous subtleties---e.g., Precisely what constitutes a conflict between updates in different replicas? What does the synchronizer do if updates conflict? What happens when files are renamed? What if the directory structure is reorganized in one replica?

Our goal is to offer a simple, concrete, and precise framework for describing the behavior of file synchronizers. To this end, we divide the synchronization task into two conceptually distinct phases: update detection and reconciliation. We discuss each phase in detail and develop a straightforward specification of each. We sketch our own implementation of these specifications and discuss how they apply to some existing synchronization tools.

(Joint work with Sundar Balasubramaniam, Matthieu Goulay, and Trevor Jim.)

August 20, 1999
Wean 8220