File synchronization

From Wikipedia, the free encyclopedia

Jump to: navigation, search

File synchronization (or 'synching' or 'syncing') in computing is the process of making sure that two or more locations contain the same up-to-date files. If you add, change, or delete a file from one location, the synchronization process will add, change, or delete the same file at the other location.

File synchronization may be one-way or two-way. In a one-way sync, also called mirroring, files are copied only from a 'source' location to a 'target' location, or locations, but no files are copied back to the source location. In two-way sync, files are copied in both directions, keeping the two locations in sync with each other. The term synchronization is used in this article to mean exclusively two-way synchronization, in contrast with 'mirroring'.

File synchronization maintains the same version of files on multiple locations, normally directories on a computer or removable storage devices such as USB flash drives. In other words, when two locations are synchronized, the most current version of a file is available at both locations, regardless of where it was last modified. File synchronization is useful for mobile workers, or others that work on multiple computers.

Although it is possible to synchronize directories manually, using a software tool is both faster and less error prone.

Contents

[edit] Related tools

File synchronization tools are similar to Version Control tools (CVS, Subversion, etc.), distributed filesystems (Coda, etc.), and mirroring utilities (rsync, etc.), in that all these attempt to keep sets of files synchronized. However, only version control and file synchronization tools can deal with modifications to more than one copy of the files.

Version control tools are intended to deal with situations where more than one person wants to simultaneously modify the same file, while file synchronizers are optimized for situations where only one copy of the file will be edited at a time. For this reason, although version control tools can be used for file synchronization, dedicated programs require less overhead.

Distributed filesystems may also be seen as ensuring multiple versions of a file are synchronized. Unlike file synchronization, this is transparent to the user, and normally requires that the devices the files are stored on are always connected.

[edit] Features

Advanced file synchronizers will compare the differences between the two locations and synchronize only the file differences, rather than re-copying the entire file. In cases where one location is remote, this requires a software agent, a server, to be installed on the remote computer. A good sync program will also allow encryption for security, particularly when synchronizing across the Internet.

Other advanced features include:

  • Compressing any data sent across a network, again this requires a server.
  • Being able to detect 'conflicts' where a file has been changed on both sources, as opposed to where it has only been changed on one. Not detecting conflicts, and instead overwriting the less recently edited file, can cause loss of data.
  • Specific support for using an intermediate storage device, such as a removable flash disc, to synchronize two machines. Although most synchronizing programs can be used in this way, providing specific support for this can reduce the amount of data stored on the device.
  • The ability to preview any changes before they are made.
  • The ability to view differences in individual files.

It is possible to synchronize multiple locations by synchronizing them a pair at a time.

[edit] Programs

There are a very large number of file synchronization programs available, either as open source, freeware (closed-source), or commercial licenses.

Here is an incomplete list of file synchronization programs:

[edit] Open-source

name protocol language platforms license Latest Version (as of March 2009) propagates deletions
Unison similar to rsync; uses SSH (or file system) as transport OCaml Windows, Linux, OS X, other Unix GPL 2.27.57 [20-Jan-2008] Yes (centralized database)
JFileSync file system Java Windows, Linux, OS X, other Unix GPL 2.2 [20-Jul-2007] No
FreeFileSync file system C++ Windows, Linux GPL 1.17 [5-Apr-2009] No
WinSCP (Secure) FTP C++ Windows GPL
rsync rsync Unix, Windows (with CygWin), OS X GPL
DirSync Pro file system Java Windows, Linux, Mac OS X GPL 1.02 [22-Feb-2009] No
Conduit (generic framework) Many Python Linux, Unix GPL
WebSynchronizer file system or FTP C++ Windows GPL 1.5 [16-Jan-2007]
KDiff3 file system (text files only!) C++ Windows, Linux, Mac OS X GPL 0.9.94 [17-Jan-2009]
Synkron file system C++ Windows, Mac OS X, Linux GPL 1.5 [19-Dec-2008] Yes (database in folder)

[edit] Freeware, closed-source

[edit] Commercial

[edit] See also

Personal tools
Languages