File synchronization
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.
It can also be used for backup purposes, although it is not ideal for this.
Although it is possible to synchronize directories manually, using a software tool is both faster and less error prone.
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.
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.
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:
name | protocol | language | platforms | license | Latest Version (as of Oct 2008) |
---|---|---|---|---|---|
Unison | similar to rsync; uses SSH as transport | OCaml | Windows, Linux, OS X, other Unix | GPL | 2.27.57 [20-Jan-2008] |
JFileSync | file system | Java | Windows, Linux, OS X, other Unix | GPL | 2.2 [20-Jul-2007] |
FreeFileSync | file system | C++ | Windows, Linux | GPL | 1.14 [1-Feb-2009] |
WinSCP | (Secure) FTP | C++ | Windows | GPL | |
rsync | rsync | Unix | GPL | ||
DirSync Pro | file system | Java | Windows, Linux, Mac OS X | GPL | 1.0 [5-Nov-2008] |
FullSync | file system or FTP | Java | Windows | GPL2 | 0.9.1 [8-Mar-2005] |
Conduit (generic framework) | Many | Python | Linux, Unix | GPL | |
WebSynchronizer | file system or FTP | C++ | Windows | GPL | 1.5 [18-Sep-2006] |
KDiff3 | file system (text files only!) | C++ | Windows, Linux, Mac OS X | GPL | 0.9.94 [17-Jan-2009] |
Freeware, closed-source
- BestSync sync files, FTP, outlook, and USB
- Microsoft ActiveSync syncs mobile devices
- Windows Live Sync (Previously Microsoft FolderShare)
- Microsoft Sync Framework syncs files, data and services
- Microsoft SyncToy
- Windows Mobile Device Center
- GoodSync (free version has trial period; after trial, features are limited)
- SyncBack (older version is freeware, newer version is commercial)
- SyncMate (basic version is freeware, expert version is commercial)
- Gbridge Sync folders, Remote desktop, Live web browsing, etc. (Freeware)
Commercial
- Dmailer Sync
- Distributed Storage(limited freeware trial)
- Allway Sync (announced as freeware but it's actually a usage limited freeware trial)
- Dropbox (up to 2GB free)
- OpenDrive
- Robocopy
- Synchromagic
- PowerFolder
- SugarSync
- SynchroJet
- Synchronize It! 3
- Super Flexible File Synchronizer
- ViceVersa Pro 2
- SyncTogether OS X only
- ADCS
- Mobiliti
- Bamboo File Sync and Backup Software
- Migo Mobile Desktop
- Zsync
- DataSync 3
- Handy Backup
See also
- File comparison
- Comparison of file comparison tools
- Backup software
- Distributed filesystem
- List of backup software
- Mirror (computing)
- Remote backup service
- Shared file access
- SyncML, a standard mainly for calendar, contact and email synchronization
- Version Control