When multiple file systems contain exactly the same content, the file systems are said to be “in sync”. To keep file systems in sync, synchronization applications detect differences between file systems, and then perform operations to eliminate the differences. Typically, synchronization applications are used to synchronize the file systems of different computers that need to access different copies of the same files. A set of file systems that are to be synchronized with each other are referred to herein as a “synchronization set”. Each file system that belongs to a given synchronization set is referred to as a “synchronized system”.
The act of synchronizing a synchronization set is referred to as a synchronization operation. During each synchronization operation, a synchronization application typically attempts to detect when items have been deleted or added in any of the synchronized systems since the previous synchronization operation.
In general, synchronization applications seek to add to all synchronized systems those items that are detected as being added to any synchronized system since the previous synchronization operation. Similarly, synchronization applications seek to delete from all synchronized systems those items that are detected as being deleted from any synchronized system since the previous synchronization operation.
Typically, the synchronization application will not distinguish between (1) added items that are copies of other items and (2) added items that were created as originals. In addition, when a renamed item has been altered, it appears that the original item was deleted and a new item was added. Consequently, the original items may be deleted in all synchronized systems, and the new altered item will be added to all synchronized systems. Alternatively, the synchronization application may place both the altered item and the non-altered item together in the same file.
Under current synchronization techniques, if a user performs multiple operations on an item and then seeks to synchronize that item with another, the application will detect that item as altered or new. The application will not be able to detect specific operations performed on the item. As a result, the synchronization operation may delete one file for another, or add the altered file to be stored with the original file in the same file system.
Synchronization operations often involve a significant amount of resource consumption. For example, when a synchronization application detects the addition of a new file to one synchronized system, data transfer of the contents of the new file to all other synchronized systems is required. If the file is large and/or the number of synchronized systems is large, the resource consumption may be significant.
Another problem with current synchronization techniques is that new or replaced files do not retain metadata information from prior to their transfer or recreation on the file system. Thus, if a file created at time T1 is altered, the fact that the file was originally created at time T1 will be lost by when the synchronization application treats the altered file as a new file, and the original file as a deleted file.