Screenshot of Duplicati 1.3.4
|Original author(s)||Kenneth Skovhede|
|Initial release||June 1, 2008|
1.3.4 / February 2, 2013
22.214.171.124 / May 30, 2017
|Available in||9 languages|
|License||GNU Lesser General Public License|
Duplicati is a backup client that securely stores encrypted, incremental, compressed remote backups of local files on cloud storage services and remote file servers. Duplicati supports not only various online backup services like OneDrive, Amazon S3, Rackspace Cloud Files, Tahoe LAFS, Google Docs but also any servers that support SSH/SFTP, WebDAV, or FTP.
Duplicati uses standard components such as rdiff, zip, AESCrypt and GnuPG. This allows users to recover backup files even if Duplicati is not available. Released under the terms of the GNU Lesser General Public License (LGPL), Duplicati is free software.
Duplicati is written mostly in C# and implemented completely within the CLR, which enables it to be cross-platform. It runs well on 32bit and 64bit versions on Windows, Mac OS X and Linux using either Microsoft.NET or Mono.
Duplicati has both a graphical user interface with a wizard style interface as well as a commandline version for use in headless environments. Both interfaces use the same core and thus have the same set of features and capabilities. The commandline version is similar to the Duplicity interface.
Duplicati has some unique features that are usually only found in commercial systems, such as remote verification of backup files, disk snapshots, and backup of open files. The disk snapshots are performed with VSS on Windows and LVM on Linux.
The original Duplicati project was started in June 2008 and intended to produce a graphical user interface for the Duplicity program. This included a port of the Duplicity code for use on Windows, but was dropped in September 2008 where work on a clean re-implementation began. This re-implementation includes all the sub-programs found in Duplicity, such as rdiff, ftp, etc. This initial version of Duplicati saw an initial release in June 2009.
The Duplicati GUI and commandline interface both call a common component called Main which serves as a binding point for all the operations supported. Currently the encryption, compression and storage component are considered subcomponent and are loaded at runtime, making it possible for a third party developer to inject a subcomponent into Duplicati without access to the source, or any need to modify Duplicati itself. The license type is also flexible enough to allow redistribution of Duplicati with a closed source storage provider. Duplicati is designed to be as independent of the provider as possible, which means that any storage medium that supports the common commands GET/PUT/LIST/DELETE can work with Duplicati.
The Duplicity model, on which Duplicati is based, relies heavily on components in the system, such as librdiff, TcFTP and others. Since Duplicati is intended to be cross platform, and it is unlikely that all those components are available on all platforms, Duplicati re-implements the components instead. Most notably, Duplicati features an rdiff and AESCrypt implementation that work on any system that supports a CLR runtime.
The Duplicati GUI is intended to be used on a single machine with a display attached. Because of this, it is not currently possible to use Duplicati as a Windows service or Linux Daemon. A workaround is possible by using the commandline version, but that complicates monitoring of backup status. Work to solve this is in progress.
Duplicati only stores the file modification date, not metadata like permissions and attributes. This feature is planned for version 2.0.