In a remote multi-client file storage system, a method for facilitating synchronization of each of a plurality of remote file systems (RFSs) with particular, associated ones of a plurality of local file systems (LFSs), said RFSs being located geographically remotely from said LFSs, said method comprising:
- maintaining a first global revision identifier associated with a first RFS of said plurality of said RFSs, said first global revision identifier being a data variable having a value that is updated responsive to a file system operation being performed on any of a plurality of different file system objects associated with said first RFS, but not on a file system object associated with a second RFS of said plurality of RFSs;
- maintaining a second global revision identifier associated with said second RFS, said second global revision identifier being a data variable having a value that is updated responsive to a file system operation being performed on any of a plurality of different file system objects associated with said second RFS, but not on a file system object associated with said first RFS;
- receiving from a first local file storage system storing a first one of said LFSs a prior value of said first global revision identifier associated with the occurrence of a prior synchronization of said file system objects of said first RFS with file system objects of said first one of said LFSs associated with said first RFS, at least a portion of said file system objects of said first one of said LFSs having been locally altered since said prior synchronization of said file system objects of said first RFS with file system objects of said first one of said LFSs;
- receiving from a second local file storage system storing a second one of said LFSs a prior value of said second global revision identifier associated with the occurrence of a prior synchronization of said file system objects of said second RFS with file system objects of said second one of said LFSs associated with said second RFS, at least a portion of said file system objects of said second one of said LFSs having been locally altered since said prior synchronization of said file system objects of said second RFS with file system objects of said second one of said LFSs;
- establishing a network connection over a wide area network with a first user associated with said first RFS and said first global revision identifier;
- providing access to said first RFS to said first user, said first RFS including said plurality of file system objects associated with said first RFS, each of said file system objects associated with said first RFS being associated with first metadata;
- receiving an instruction to modify a particular file system object of said plurality of file system objects of said first RFS from said first user;
- responsive to said particular file system object of said first RFS being modified, updating a first portion of said first metadata associated with said particular file system object of said first RFS based on a current value of said first global revision identifier and not said second global revision identifier;
- receiving an instruction to modify a different file system object of said plurality of file system objects of said first RFS from said first user or another user associated with said first RFS;
- responsive to said different file system object of said first RFS being modified, updating a second portion of said first metadata associated with said different file system object of said first RFS based on an updated value of said first global revision identifier;
- comparing said first metadata of said file system objects of said first RFS with said prior value of said first global revision identifier received from said first local file storage system to identify file system objects of said first RFS that have not yet been synchronized with said file system objects of said first LFS;
- comparing second metadata associated with said file system objects of said second RFS with said prior value of said second global revision identifier received from said second local file storage system to identify file system objects of said second RFS that have not yet been synchronized with said file system objects of said second LFS;
- responsive to receiving said prior value of said first global revision identifier providing to said first local file storage system only metadata corresponding to said identified file system objects of said first RFS that have not yet been synchronized and not metadata corresponding to file system objects of said first RFS that have been synchronized in order to facilitate synchronization of said first RFS with said first LFS;
- and
- responsive to receiving said prior value of said second global revision identifier providing to said second local file storage system only metadata corresponding to said identified file system objects of said second RFS that have not yet been synchronized and not metadata corresponding to file system objects of said second RFS that have been synchronized in order to facilitate synchronization of said second RFS with said second LFS.