Difference between revisions of "Synchronization and backup programs"

From ArchWiki
Jump to navigation Jump to search
(rdup is maintained: every year except 2014 accepted merge-requests)
 
(539 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
[[Category:Data compression and archiving]]
+
[[Category:Synchronization]]
[[Category:System recovery]]
+
[[Category:Backup]]
{{i18n|Backup_Programs}}
+
[[Category:Software comparisons]]
 +
[[de:Backups]]
 +
[[ja:バックアッププログラム]]
 +
[[ru:Synchronization and backup programs]]
 +
[[zh-hans:Synchronization and backup programs]]
 +
{{Related articles start}}
 +
{{Related|System backup}}
 +
{{Related|Disk cloning}}
 +
{{Related|List of applications#File sharing}}
 +
{{Related|System maintenance#Backup}}
 +
{{Related|Dotfiles}}
 +
{{Related|File recovery}}
 +
{{Related articles end}}
  
This wiki page contains information about various backup programs. It's a good idea to ''have'' regular backups of important data, most notably configuration files ({{Ic|/etc/*}}) and local pacman database (usually {{Ic|/var/lib/pacman/local/*}}).
+
This page lists and compares applications that synchronize data between two or more locations, and those that build on top of such functionality to make incremental copies of important data for backup purposes. Because of their relationship, the two groups share several traits that justify describing them in the same article.
  
== Introduction ==
+
== Backup overview ==
Before you start trying various programs out, try to think about your needs, e.g. consider the following questions:
 
* What backup medium do I have available?
 
** cd / dvd
 
** remote server (With what access? Ssh? Can I install some software on it (necessary for e.g. rsync-based solutions)?)
 
** external harddrive
 
* How often do I plan to backup?
 
** daily?
 
** weekly?
 
** less often?
 
* What goodies do I expect from the backup solution?
 
** compression? (what algorithms?)
 
** encryption? (gpg or something more straightforward?)
 
* Most importantly: how do I plan to restore backups if needed?
 
  
All right, enough with this, let's see some options!
+
Having backups of important data is a necessary measure to take, since human and machine processing errors are very likely to generate corruption as time passes, and also the physical media where the data is stored is inevitably destined to fail. In order to choose the best program for one's own needs, the following aspects should be considered:
  
== Backup software ==
+
* The type of backup medium that is going to store the data, e.g. CD, DVD, remote server, external hard drive, etc.
=== Incremental backups ===
+
* The planned frequency of backups, e.g. daily, weekly, monthly, etc.
The point with these is that they remember what has been backed up during the last run, and back up only what has changed. Great if you back up often.
+
* The features expected from the backup solution, e.g. compression, encryption, handles renames, etc.
 +
* The planned method to restore backups if needed.
  
==== Rsync-type backups ====
+
== Data synchronization ==
The main characteristic of this type of backups is that they maintain a copy of the directory you want to keep a backup of, in a traditional "mirror" fashion.
 
  
Certain rsync-type packages also do snapshot backups by storing files which describe how the contents of files and folders changed from the last backup (the so-called 'diffs'). Hence, they are inherently incremental, but usually they do not have compression/encryption. On the other hand, a working copy of everything is immediately available, no decompression/decryption needed. Finally the way it works makes it hard to burn backups to cd/dvd..
+
These applications simply keep directories synchronized between multiple locations/machines, in a "mirror" fashion. Nonetheless, most of them still allow storing and reverting to old revisions of modified or deleted files.
  
===== CLI =====
+
See also:
* {{App|[[rsync]] (in extra repo)|file transfer program to keep remote files in sync
+
* [[List of applications/Utilities#File synchronization]]
** rsync almost always makes a mirror of the source
+
* [[List of applications/Internet#Cloud synchronization clients]]
** Impossible to restore a full backup before the most recent backup (but you can use --backup to keep old versions of the files)
+
* [[Wikipedia:Comparison of file synchronization software]]
** Standard install on all distros
 
** Can run over SSH (port 22) or native rsync protocol (port 873)
 
** Win32 version available
 
|http://rsync.samba.org/|{{Pkg|rsync}}}}
 
  
* {{App|[[Wikipedia:Rsync#Variations|rdiff-backup]] (in community repo)|utility for local/remote mirroring and incremental backups
+
=== Legend ===
** Stores most recent backup as regular files
 
** To revert to older versions, you apply the diff files to recreate the older versions
 
** It is granularly incremental (delta backup), it only stores changes to a file; will not create a new copy of a file upon change
 
** Required python and librsync
 
** Win32 version available
 
|http://www.nongnu.org/rdiff-backup/|{{Pkg|rdiff-backup}}}}
 
  
* {{App|rsnapshot (in community repo)|remote filesystem snapshot utility
+
;Name: The application name, linking to the ArchWiki article or the official website.
** Does not store diffs, instead it copies entire files if they have changed
+
;Package: A link to the package.
** Creates hard links between a series of backed-up trees (snapshots)
+
;Implementation: The programming language, library, or utility that the application is based on.
** It is differential in that the size of the backup is only the original backup size plus the size of all files that have changed since the last backup.
+
;Delta transfer: Only the modified ''parts'' of files are transferred.
** Destination filesystem must support hard links
+
;Encrypted transfer: Data is encrypted by default when transferred over the network.
** Requires perl
+
;FS metadata: File system permissions and attributes are synchronized.
** Win32 version available
+
;Resumable: The synchronization can be resumed if interrupted.
|http://www.rsnapshot.org/|{{Pkg|rsnapshot}}}}
+
;Handles renames: Moved/renamed files are detected and not stored or transferred twice. It typically means that a checksum of files or its chunks is computed. Applications missing this functionality can be supplemented by combining with {{AUR|hsync}}, which ''only'' synchronizes renames.
 +
;Version control: The old version of files are backed up (''reverse incremental backup'').
 +
;Change propagation: Specifies in how many directions changes can be propagated.
 +
:* ''unidirectional'' means one-way synchronization of two locations,
 +
:* ''bidirectional'' means two-way synchronization of two locations and
 +
:* ''multidirectional'' means full synchronization of more than two locations.
 +
;Conflict resolution: The application handles file conflicts, either automatically or interactively, i.e. it does not silently discard conflicting files. This attribute does not apply to applications that only propagate changes in one direction.
 +
;FS monitoring: The application listens to file system events to trigger the synchronization.
 +
;CLI: The application provides a command-line interface.
 +
;Other interfaces: The application has the specified user interfaces, e.g. GUI, TUI, or web-based.
 +
;License: The license of the server and client applications.
 +
;Other platforms: Supported operating systems other than Linux.
 +
;Maintained: The project is maintained.
 +
;Specificity: Brief notes about special features that notably set the application apart from the others.
  
* {{App|Safekeep (in AUR)|A client/server backup system which enhances the power of rdiff-backup
+
=== Table ===
** Enhancement to rdiff-backup
 
** Integrates with Linux LVM and databases to create consistent backups
 
** Bandwidth throttling
 
|http://safekeep.sourceforge.net/|{{AUR|safekeep}}}}
 
  
* {{App|Link-Backup (from AUR, may be patched with additional features)|similar to rsync based scripts, but does not use rsync
+
{{Style|Explicitly list supported protocols / tools. Drop ''Encrypted transfer'' column because it depends on the protocol / tool. Simplify and color ''Change propagation'' column and move it leftwards. Split unmaintained into subsection? See also [[User:Larivact/drafts/Synchronization and backup programs#Synchronization]].}}
** Creates hard links between a series of backed-up trees (snapshots)
+
{{Expansion|Fill in the blanks.}}
** Intelligently handles renames, moves, and duplicate files without additional storage or transfer
 
** dstdir/.catalog is a catalog of all unique file instances; backup trees hard-link to the catalog
 
** Transfer occurs over standard I/O locally or remotely between a client and server instance of this script
 
** It copies itself to the server; it does not need to be installed on the server
 
** Requires SSH for remote backups
 
** It resumes stopped backups; it can even be told to run for n minutes
 
|http://www.scottlu.com/Content/Link-Backup.html|{{AUR|link-backup}}}}
 
  
* {{App|Unison|Synchronizes files between two machines over network (Lan or Inet) using smart diff method + rsync, allows one to interactively choose which changes to push, pull, or merge. |http://www.cis.upenn.edu/~bcpierce/unison/|{{Pkg|unison}}}}
+
{| class="wikitable sortable" style="text-align: center"
 +
! Name
 +
! Package
 +
! Implementation
 +
! Delta transfer
 +
! Encrypted transfer
 +
! FS metadata
 +
! Resumable
 +
! Handles renames
 +
! Version control
 +
! Change propagation
 +
! Conflict resolution
 +
! FS monitoring
 +
! CLI
 +
! Other interfaces
 +
! License
 +
! Other platforms
 +
! Maintained
 +
! Specificity
 +
|-
 +
! [https://www.freefilesync.org/ FreeFileSync]
 +
| {{AUR|freefilesync}}
 +
| C++
 +
| ?
 +
| {{G|SFTP [http://www.freefilesync.org/faq.php#features]}}
 +
| ?
 +
| ?
 +
| {{G|Yes [http://www.freefilesync.org/faq.php#features]}}
 +
| {{G|1=Yes [http://www.freefilesync.org/manual.php?topic=versioning]}}
 +
|'''uni'''directional / '''multi'''directional
 +
| {{Yes}}
 +
| ?
 +
| {{No}}
 +
| {{Yes}}
 +
| {{B|GPL}}
 +
| Windows, macOS
 +
| {{Yes}}
 +
|
 +
|-
 +
! [https://git-annex.branchable.com/ git-annex]
 +
| {{Pkg|git-annex}}
 +
| Haskell, git
 +
| {{G|rsync [http://git-annex.branchable.com/transferring_data/]}}
 +
| {{G|rsync, others [http://git-annex.branchable.com/transferring_data/]}}
 +
| {{R|No, but has custom non-FS metadata [https://git-annex.branchable.com/metadata/]}}
 +
| {{G|Yes [https://git-annex.branchable.com/transferring_data/]}}
 +
| {{G|Yes, content-addressable storage}}
 +
| {{Yes}}
 +
| '''multi'''directional; with git remotes [http://git-annex.branchable.com/sync/]
 +
| {{G|renames conflicting files [http://git-annex.branchable.com/automatic_conflict_resolution/]}}
 +
| {{G|optional, git-annex assistant}}
 +
| {{Yes}}
 +
| {{G|[http://git-annex.branchable.com/assistant/ git-annex assistant]}}
 +
| {{B|GPLv3}}
 +
| macOS, Android (beta), Windows (beta)
 +
| {{Yes}}
 +
| {{L|Manage files with git}}
 +
|-
 +
! [http://www.netpower.fr/osync osync.sh]
 +
| {{AUR|osync}}
 +
| Bash, based on rsync
 +
| {{G|rsync}}
 +
| {{G|rsync}}
 +
| ?
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Yes}}
 +
| '''bi'''directional
 +
| {{G|keeps multiple versions of a file [http://www.netpower.fr/sites/default/files/soft/html-doc/osync_v1.2.html#toc-Subsubsection-1.3.1]}}
 +
| {{G|optional [https://github.com/deajan/osync#daemon-mode]}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{B|BSD}}
 +
|
 +
| {{Yes}}
 +
|
 +
|-
 +
! [https://rclone.org/ rclone]
 +
| {{Pkg|rclone}}
 +
| Go
 +
| {{No}} [https://rclone.org/faq/#why-doesn-t-rclone-support-partial-transfers-binary-diffs-like-rsync]
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| '''uni'''directional [https://rclone.org/faq/#can-rclone-do-bi-directional-sync]
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| {{G|[https://github.com/mmozeiko/RcloneBrowser RcloneBrowser]}}
 +
| {{B|MIT}}
 +
| *BSD, Plan9, Solaris, Windows, macOS
 +
| {{Yes}}
 +
| {{L|Optimized for synchronization with cloud storage, behavior varies with the features supported by the remote location.}}
 +
|-
 +
! [http://www.nongnu.org/rdiff-backup/ rdiff-backup]
 +
| {{Pkg|rdiff-backup}}
 +
| Python 2, librsync
 +
| {{G|rsync}}
 +
| {{G|rsync}}
 +
| {{Yes}}
 +
| ?
 +
| {{No}}
 +
| {{Yes}}
 +
|colspan="2"| '''uni'''directional
 +
| {{No}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{B|GPL}}
 +
| Win32
 +
| ?
 +
|
 +
|-
 +
! [[Resilio Sync]]
 +
| {{aur|rslsync}}
 +
| C++
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| {{Yes}}
 +
| '''multi'''directional
 +
| ?
 +
| ?
 +
| {{No}}
 +
| {{G|Web}}
 +
| {{V|Proprietary freemium}}
 +
| FreeBSD, Windows, macOS, Android, iOS, Windows Phone, Amazon Kindle Fire
 +
| {{Yes}}
 +
| {{L|P2P sync}}
 +
|-
 +
! [[rsync]]
 +
| {{pkg|rsync}}
 +
| C
 +
| {{Yes}}
 +
| {{G|SSH or native protocol}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{G|
 +
* {{ic|--link-dest}} with hard links [http://www.ibm.com/developerworks/aix/library/au-spunix_rsync/index.html#backup]
 +
* {{ic|--backup}}
 +
}}
 +
|colspan="2"| '''uni'''directional
 +
| {{No}}
 +
| {{Yes}}
 +
| {{G|[[Rsync#Front-ends]]}}
 +
| {{B|GPLv3}}
 +
| Win32
 +
| {{Yes}}
 +
| {{L|Standard tool present on all Linux distributions.}}
 +
|-
 +
! [https://sparkleshare.org/ SparkleShare]
 +
| {{Pkg|sparkleshare}}
 +
| C#, git
 +
| {{Yes}}
 +
| {{G|AES-256}} [https://github.com/hbons/SparkleShare/wiki/Client-Side-Encryption]
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| ?
 +
| {{No}}
 +
| {{Yes}}
 +
| {{B|GPLv3}}
 +
| Windows, macOS
 +
| {{Yes}}
 +
| It can sync with any Git server over SSH.
 +
|-
 +
! [https://www.syncany.org/ Syncany]
 +
| {{AUR|syncany}}
 +
| Java
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{B|GPLv3}}
 +
|
 +
| {{No}} [https://github.com/syncany/syncany/graphs/contributors]
 +
|
 +
|-
 +
! [[Syncthing]]
 +
| {{pkg|syncthing}}
 +
| Go
 +
| {{G|Yes [http://docs.syncthing.net/users/faq.html#is-synchronization-fast]}}
 +
| {{G|Yes [http://docs.syncthing.net/users/security.html]}}
 +
| {{Y|partial [http://docs.syncthing.net/users/faq.html#what-things-are-synced]}}
 +
| {{G|Yes }}
 +
| ?
 +
| {{G|Yes [http://docs.syncthing.net/users/versioning.html]}}, previous versions moved to archive folder
 +
| '''multi'''directional
 +
| {{G|renames one file [https://docs.syncthing.net/users/faq.html#what-if-there-is-a-conflict]}}
 +
| {{G|Yes}}
 +
| {{Yes}}
 +
| {{G|Web, GTK}}
 +
| {{B|MPL v2}}
 +
| BSD, Windows, macOS, Android, Kindle Paperwhite
 +
| {{Yes}}
 +
| {{L|P2P sync}}
 +
|-
 +
! [http://synkron.sourceforge.net/ Synkron]
 +
| {{AUR|synkron}}
 +
| C++
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| '''multi'''directional
 +
| ?
 +
| ?
 +
| {{No}}
 +
| {{G|Qt}}
 +
| {{B|GPLv2}}
 +
| Windows, macOS
 +
| {{R|[https://sourceforge.net/projects/synkron/ No]}}
 +
|
 +
|-
 +
! [[taskd]]
 +
| {{Pkg|taskd}}
 +
| C++, Python
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| '''multi'''directional
 +
| ?
 +
| {{No}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{B|MIT}}
 +
| Android
 +
| {{Yes}}
 +
|
 +
|-
 +
! [[Unison]]
 +
| {{pkg|unison}}
 +
| OCaml
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Y|partial [http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#perms]}}
 +
| {{G|optional [http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#speeding]}}
 +
| {{No}}
 +
| {{G|Yes [http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#backups]}}
 +
| '''bi'''directional
 +
| {{G|interactive}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{G|GTK2}}
 +
| {{B|GPL}}
 +
| FreeBSD, Windows, macOS, Android
 +
| {{G|Yes [http://www.cis.upenn.edu/~bcpierce/unison/status.html]}}
 +
|
 +
|-
 +
! [[Zaloha.sh]]
 +
|
 +
| bash
 +
| {{No}}
 +
| {{No}}
 +
| {{G|optional}}
 +
| {{No}}
 +
| {{No}}
 +
| {{No}}
 +
| '''bi'''directional
 +
| {{G|interactive}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{B|MIT}}
 +
| Windows under Cygwin
 +
| {{G|Yes [https://github.com/Fitus/Zaloha.sh/]}}
 +
| Small and simple
 +
|}
  
* {{App|oldtime|A highly customizable and configurable backup & restore system|https://github.com/GutenYe/oldtime|}}}
+
== Incremental backups ==
  
===== GUI =====
+
Applications that can do [[Wikipedia:Incremental backup|incremental backups]] remember and take into account what data has been backed up during the last run (so-called "diffs") and eliminate the need to have duplicates of unchanged data. Restoring the data to a certain point in time would require locating the last full backup and all the incremental backups from then to the moment when it is supposed to be restored. This sort of backup is useful for those who do it very often.
* {{App|Back In Time (in AUR)|simple backup tool for Linux inspired from “flyback project” and “TimeVault”
 
** Creates hard links between a series of backed-up trees (snapshots)
 
** Inspired by FlyBack and TimeVault
 
** Really is just a front-end to rsync, diff, cp
 
** A new snapshot is created only if something changed since the last snapshot
 
|http://backintime.le-web.org/|{{AUR|backintime}}}}
 
  
* {{App|FlyBack (in AUR)|A clone of Apple's Mac OS X Time Machine software|http://www.flyback-project.org/|{{AUR|flyback}}}}
+
See also:
 +
* [[List of applications/Security#Backup programs]]
 +
* [[Wikipedia:List of backup software]]
 +
* [[Wikipedia:Comparison of backup software]]
 +
* [[Wikipedia:Comparison of online backup services]]
  
* {{App|Areca Backup (in AUR)|easy to use and reliable backup solution for Linux and Windows
+
'''Legend:'''
** Written in Java
 
** Primarily archive-based (ZIP), but will do file-based backup as well
 
** Delta backup supported (stores only changes)
 
|http://areca.sourceforge.net/|{{AUR|areca}}}}
 
  
* {{App|Luckybackup (in AUR)|an easy program to backup and sync your files.
+
* '''Name''': the application name, linking to the ArchWiki article or the official website.
** It is written in Qt and C++
+
* '''Package''': a link to the package.
** It has Sync,Backup (with include and exclude options),Restore operations,Remote connection backup,Scheduled backups,Command line mode and more abilities.
+
* '''Implementation''': the programming language, library, or utility that the application is based on.
|http://luckybackup.sourceforge.net/index.html|{{AUR|luckybackup}}}}
+
* '''Compressed storage''': compression is used for storage.
 +
* '''Encrypted storage''': encryption is used for storage.
 +
* '''Delta transfer''': only the modified ''parts'' of files are transferred.
 +
* '''Encrypted transfer''': data is encrypted by default when transferred over a network.
 +
* '''FS metadata''': file system permissions and attributes are backed up.
 +
* '''Easy access''': the backup is stored plainly in the file system, or is mountable as such.
 +
* '''Resumable''': the backup can be resumed without restarting it if interrupted.
 +
* '''Handles renames''': moved/renamed files are detected and not stored or transferred twice; it typically means that a checksum is computed for files or chunks thereof.
 +
* '''CLI''': the application is command-line driven, i.e. it is scriptable.
 +
* '''Other interfaces''': the application has the specified user interfaces, e.g. GUI, TUI, or web-based.
 +
* '''Licence''': the licence of the server and client applications.
 +
* '''Other platforms''': supported operating systems other than Linux.
 +
* '''Maintained''': whether the project is maintained.
 +
* '''Specificity''': brief notes about special features that notably set the application apart from the others.
  
* {{App|syncbackup (in AUR)|Front-end for rsync provides a fast and extraordinarily copying tool. It offers the most common options that control its behavior and permit very flexible specification of the set of files to be copied.
+
=== Single machine ===
|http://www.darhon.com/syncbackup|{{AUR|syncbackup}}}}
 
  
* {{App|[[BackupPC]] (in community repo)|BackupPC is a high-performance, enterprise-grade system for backing up Unix, Linux, WinXX, and MacOSX PCs, desktops and laptops to a server's disk. BackupPC is highly configurable and easy to install and maintain.
+
These applications are aimed at backing up data from the machine they are installed on, although the backup destination can be located on an external machine or storage media.
|http://backuppc.sourceforge.net/index.html|{{Pkg|BackupPC}}}}
 
  
==== Not rsync-based ====
+
==== Chunk-based increments ====
They tend to create (big) archive files (like tar.bz2), and (of course) keep track of what's been archived. Now creating tar.bz2 or tar.gz archives has the advantage that you can extract the backups with just tar/bzip2/gzip, so you do not need to have the backup program around.
 
  
* {{App|backup-manager (in AUR)|command line backup tool for GNU/Linux, designed to help you make daily archives of your file system. Written in bash and perl, it can make archives and provides lots of interesting features:
+
{{Expansion|Fill in the blanks. ''FS metadata'' column: What does ''Immature'' mean? ''Resumable'' column: What does ''Pausing only'' / ''Kinda through tar'' mean?}}
** 1 configuration file, 5 minutes setup
 
** Manually invoke backup process or run daily unattended via CRON
 
** Backup files, MySQL databases and Subversion repositories
 
** Specify multiple targets to backup at once (/etc, /home, etc…)
 
** Ability to exclude files from backup
 
** Automatically purge old backups
 
** Full backup only or Full + Incremental backup
 
** Backup to an attached disk, LAN or Internet
 
** Burns backup to CD/DVD with MD5 checksum verification
 
** (Un)compresses archives in all open and arbitrary formats with any command line or GUI tool
 
** Slice archives to 2 GB if using dar archives format
 
** Backup over SSH
 
** Encrypts archives
 
** Offsite remote upload of archives via FTP, SSH, RSYNC or Amazon S3
 
** Can run with different configuration files concurrently
 
** Easy external hooks
 
|http://www.backup-manager.org/|{{AUR|backup-manager}}}}
 
  
* {{App|[[Backup with arch-backup|arch-backup]] (in community repo)|trivial backup scripts with simple configuration:
+
If a file is modified, these applications store only its changed ''parts'' at the next snapshot. Compared to [[#File-based increments]] applications, these are more space-efficient, especially when large files receive small modifications; on the other hand, the archived snapshots have to be opened with the backup application that created them, since the files have to be reconstructed from the stored binary diffs.
** compression method can be configured
 
** possible to specify more directories to backup
 
|http://code.google.com/p/archlinux-stuff/|{{Pkg|arch-backup}}}}
 
  
* {{App|[[Backup with hdup|hdup]] (in AUR)|it's no longer developed, the author develops rdup now (below); but it's still a decent one):
+
{| class="wikitable sortable" style="text-align:center"
** creates tar.gz or tar.bz2 archives
+
! Name
** supports gpg encryption
+
! Package
** supports pushing over ssh
+
! Implementation
** possible to specify more directories to backup
+
! Compressed storage
|http://miek.nl/projects/hdup2/|{{AUR|hdup}}}}
+
! Encrypted storage
 +
! Delta transfer
 +
! Encrypted transfer
 +
! FS metadata
 +
! Easy access
 +
! Resumable
 +
! Handles renames
 +
! CLI
 +
! Other interfaces
 +
! Licence
 +
! Other platforms
 +
! Maintained
 +
! Specificity
 +
|-
 +
! [http://areca.sourceforge.net/ Areca Backup]
 +
| {{AUR|areca}}
 +
| Java
 +
| {{G|Zip, Zip64}}
 +
| {{G|AES128, AES256}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Y|Pausing only}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| GPLv2
 +
| Windows
 +
| {{Yes}}
 +
|
 +
|-
 +
! [http://borgbackup.readthedocs.org/en/stable/ BorgBackup]
 +
| {{Pkg|borg}} {{AUR|borg-bin}}
 +
| Python, C (Cython)
 +
| {{G|lz4, zlib, lzma, zstd}}
 +
| {{G|AES256}}
 +
| {{Yes}}
 +
| {{G|SSH}}
 +
| {{Yes}} [http://borgbackup.readthedocs.org/en/stable/faq.html#which-file-types-attributes-etc-are-preserved]
 +
| {{Yes}} [http://borgbackup.readthedocs.org/en/stable/usage.html#borg-mount]
 +
| {{Yes}} [http://borgbackup.readthedocs.org/en/stable/faq.html#if-a-backup-stops-mid-way-does-the-already-backed-up-data-stay-there]
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{G|third party}}
 +
| BSD
 +
| *BSD, macOS, Windows (Cygwin / WSL)[https://borgbackup.readthedocs.io/en/stable/#main-features]
 +
| {{Yes}}
 +
| {{L|Deduplication based on variable length chunks; support both local and SSH-based remote backup destination.}}
 +
|-
 +
! [http://viric.name/cgi-bin/btar btar]
 +
| {{AUR|btar}}{{Broken package link|{{aur-mirror|btar}}}}
 +
| C
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{No}}
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| {{No}}
 +
| GPLv3
 +
|
 +
| {{Yes}}
 +
| {{L|Redundancy, indexed extraction, multicore compression, input and output serialisation, tolerance to partial archive errors.}}
 +
|-
 +
! [https://bup.github.io/ bup]
 +
| {{Pkg|bup}} {{AUR|bup-git}}
 +
| C, Python, git
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{G|Immature}}
 +
| {{Yes}} [https://bup.github.io/man/bup-fuse.html]
 +
| {{G|pick up where you left off [https://github.com/bup/bup/blob/master/README.md#reasons-bup-is-awesome]}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{G|{{AUR|bups}}}}
 +
| GPLv2
 +
| NetBSD, Windows, macOS
 +
| {{Yes}}
 +
| {{L|Same storage format as git.}}
 +
|-
 +
! [http://www.duplicati.com/ Duplicati]
 +
| {{AUR|duplicati-latest}}
 +
| C#
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Y|Pausing only}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| LGPL
 +
| Windows, macOS
 +
| {{Yes}}
 +
|
 +
|-
 +
! [[Duplicity]]
 +
| {{Pkg|duplicity}}
 +
| librsync
 +
| {{G|gzip}}
 +
| {{G|gpg}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{No}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{G|[[Duplicity#Front-ends|Yes]]}}
 +
| GPL
 +
|
 +
| {{Yes}}
 +
|
 +
|-
 +
! [http://kde-apps.org/content/show.php/Kup+Backup+System?content=147465 Kup Backup System]
 +
| {{Pkg|kup}}
 +
| rsync, bup front-end
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{G|Immature}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Y|bup}}
 +
| {{G|Qt}}
 +
| GPLv2
 +
|
 +
| {{Yes}}
 +
|
 +
|-
 +
! [https://obnam.org/ obnam]
 +
| {{AUR|obnam}}
 +
| Python
 +
| {{Yes}}
 +
| {{G|GnuPG}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{Yes}}
 +
| {{G|checkpoints every 100MB}}
 +
| ?
 +
| {{Yes}}
 +
| {{No}}
 +
| GPLv3
 +
|
 +
| {{R|[https://blog.liw.fi/posts/2017/08/13/retiring_obnam/ No]}}
 +
|
 +
|-
 +
! [https://restic.net/ restic]
 +
| {{Pkg|restic}} {{AUR|restic-git}}
 +
| Go
 +
| {{No}} [https://github.com/restic/restic/issues/21]
 +
| {{G|AES-256}} [https://github.com/restic/restic/blob/master/doc/Design.md]
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}} [https://restic.readthedocs.io/en/latest/manual_rest.html#metadata-handling]
 +
| {{Yes}} [https://restic.readthedocs.io/en/stable/050_restore.html#restore-using-mount]
 +
| {{Yes}} [https://github.com/restic/restic/pull/310]
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{No}} [https://github.com/restic/restic/issues/60]
 +
| BSD
 +
| OpenBSD, Windows, macOS
 +
| {{Yes}}
 +
| {{L|Supports storage on various cloud services natively and through {{Pkg|rclone}}.}}
 +
|-
 +
! [http://zbackup.org/ ZBackup]
 +
| {{AUR|zbackup}}
 +
| C++
 +
| {{G|LZMA, LZO}}
 +
| {{G|AES}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{R|planned [https://github.com/zbackup/zbackup#improvements]}}
 +
| {{No}}
 +
| {{Y|Kinda through tar}}
 +
| {{Yes}}
 +
| {{No}}
 +
| GPLv2
 +
|
 +
| {{Yes}}
 +
| {{L|Repository consists of immutable files.}}
 +
|}
  
* {{App|rdup (in AUR)|successor to hdup: the program *just determines* which files have changed since the last backup. It's completely up to you what do you want to do with that list. Some helper scripts are supplied, and with them it supports:
+
==== File-based increments ====
** creating tar.gz archives '''or''' rsync-type copy
 
** encryption (gpg and usual strong (eg. blowfish)), also applies for rsync-type copy
 
** compression (also for rsync-type copy)
 
|http://miek.nl/projects/rdup|{{AUR|rdup}}}}
 
  
* {{App|[[Duplicity|duplicity]]|simple command-line utility which allows encrypted compressed incremental backup to nearly any storage. For even simpler usage there are {{AUR|duply}} and {{pkg|deja-dup}} frontends.
+
{{Expansion|Fill in the blanks.}}
** supports gpg encryption and signing
 
** supports gzip compression
 
** supports full or incremental backups, incremental backup stores only difference between new and old file
 
** supports pushing over ftp, ssh/scp, rsync, WebDAV, WebDAVs, HSi and Amazon S3 or local filesystem
 
|http://www.nongnu.org/duplicity/|{{Pkg|duplicity}}}}
 
  
* {{App|[[Wikipedia:DAR (Disk Archiver)|DAR]]|A full-featured command-line backup tool, short for Disk ARchive
+
If a file is modified, these applications store its new version entirely at the next snapshot. Compared to [[#Chunk-based increments]] applications, these are less space-efficient, especially when large files receive small modifications; on the other hand, often the archived snapshots can be opened without the need to have the backup application installed.
** it uses its own format for archives (so you need to have it around when you want to restore)
 
** supports splitting backups into more files by size
 
** makefile-type config files, some custom scripts are available along with it
 
** supports basic encryption (not gpg; but also strong, but you need to supply a password every time)
 
** some gui tools for inspecting backups are also available {{AUR|kdar}} in [[AUR]] (but current dar needs beta version)
 
** a script suitable for running from cron is [http://sarab.sourceforge.net/ sarab] (in {{AUR|sarab}} AUR): supports pretty much any backup scheme (Towers of Hanoi, Grandfather-Father-Son, etc..)
 
|http://dar.linux.free.fr/|{{AUR|dar}}}}
 
  
* {{App|Backerupper (in AUR)|simple program for backing up selected directories over a local network. Its main intended purpose is backing up a user's personal data.
+
'''Specific legend:'''
** GUI based
 
** creating tar.gz archives
 
** possible to define : backup frequency, backup time, Max copies
 
|http://sourceforge.net/projects/backerupper/|{{AUR|backerupper}}}}
 
  
* {{App|Manent (in AUR])|an algorithmically strong backup and archival program. It's Python based and has the following features:
+
* '''Hard links''': whether unmodified files are stored as hard links to previous versions.
** Efficient backup to anything that looks like a storage
 
** Works well over a slow and unreliable network
 
** Offers online access to the contents of the backup
 
** Backed up storage is completely encrypted
 
** Several computers can use the same storage for backup, automatically sharing data
 
** Not reliant on timestamps of the remote system to detect changes
 
** Cross-platform support for Unicode file names
 
|http://www.manent-backup.com/|{{AUR|manent}}}}
 
  
* {{App|Déjà Dup|a simple GTK+ backup program. It hides the complexity of doing backups the 'right way' (encrypted, off-site, and regular) and uses duplicity as the backend.
+
{| class="wikitable sortable" style="text-align:center"
** Automatic, timed backup configurable in GUI
+
! Name
** Restore wizard
+
! Package
** Integrated into Nautilus file manager
+
! Implementation
** Inherits several features of duplicity:
+
! Compressed storage
*** exclude lists
+
! Encrypted storage
*** SFTP, FTP, samba, WebDAV destinations
+
! Delta transfer
*** GPG Encryption
+
! Encrypted transfer
|https://launchpad.net/deja-dup|{{pkg|deja-dup|}}}}
+
! FS metadata
 +
! Easy access
 +
! Resumable
 +
! Handles renames
 +
! Hard links
 +
! CLI
 +
! Other interfaces
 +
! Licence
 +
! Other platforms
 +
! Maintained
 +
! Specificity
 +
|-
 +
! [[Back In Time]]
 +
| {{AUR|backintime}}
 +
| Python, rsync, diff
 +
| {{No}}
 +
| {{No}}
 +
| {{G|rsync}}
 +
| {{G|rsync}}
 +
| {{G|rsync}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{No}}
 +
| {{G|Yes [http://backintime.le-web.org/documentation/]}}
 +
| {{Yes}}
 +
| {{G|Qt}}
 +
| GPLv2
 +
|
 +
| {{Yes}}
 +
|
 +
|-
 +
! [http://dar.linux.free.fr/ DAR] (Disk ARchive)
 +
| {{AUR|dar}}
 +
| C++
 +
| {{G|special archive format}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| {{R|No [http://dar.linux.free.fr/doc/Features.html]}}
 +
| {{Yes}}
 +
| {{G|{{AUR|dargui}}}}
 +
| GPL
 +
| FreeBSD, NetBSD, Windows, macOS
 +
| {{Yes}}
 +
|
 +
|-
 +
! [http://www.scottlu.com/Content/Link-Backup.html Link-Backup]
 +
| {{AUR|link-backup}}
 +
| Python 2
 +
| {{No}}
 +
| {{No}}
 +
| ?
 +
| {{G|SSH}}
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{R|No [http://www.scottlu.com/Content/Link-Backup.html]}}
 +
| {{Yes}}
 +
| {{No}}
 +
| MIT
 +
|
 +
| {{No}}
 +
| {{L|It copies itself to the server.}}
 +
|-
 +
! [https://github.com/miekg/rdup rdup]
 +
| {{AUR|rdup}}
 +
| C
 +
| {{G|tar.gz}}
 +
| {{G|gpg, blowfish and others}}
 +
| ?
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{No}}
 +
| GPLv3
 +
|
 +
| {{G|Yes [https://github.com/miekg/rdup/commits/master]}}
 +
| {{L|Set of command-line tools.}}
 +
|-
 +
! [[rsnapshot]]
 +
| {{Pkg|rsnapshot}}
 +
| rsync
 +
| {{No}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| {{G|Yes [http://rsnapshot.org/rsnapshot/docs/docbook/rest.html]}}
 +
| {{Yes}}
 +
| {{No}}
 +
| GPLv2
 +
| Win32
 +
| {{G| Yes [https://github.com/rsnapshot/rsnapshot/issues/191#issuecomment-562460327]}}
 +
|
 +
|-
 +
! [https://launchpad.net/sbackup sbackup]
 +
| {{AUR|sbackup}}
 +
| Python
 +
| {{G|gzip, bzip2}}
 +
| {{No}}
 +
| ?
 +
| {{G|SSH}}
 +
| ?
 +
| {{No}}
 +
| {{No}}
 +
| {{No}}
 +
| {{No}}
 +
| {{No}}
 +
| {{G|GTK}}
 +
| GPLv3
 +
|
 +
| {{No}}
 +
|
 +
|-
 +
! [https://github.com/teejee2008/timeshift TimeShift]
 +
| {{AUR|timeshift}}
 +
| rsync
 +
| {{No}}
 +
| {{No}}
 +
| {{G|rsync}}
 +
| {{G|rsync}}
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| {{No}}
 +
| {{G|GTK}}
 +
| GPLv3
 +
| Designed for full-system backups to dedicated devices.
 +
| {{Yes}}
 +
|
 +
|}
  
=== Cloud backups ===
+
=== Network oriented ===
* {{App|Crashplan (in AUR)|an online/offsite backup solution
 
** Unlimited online space for very reasonable pricing.
 
** Automatic and incremental backups to multiple destinations.
 
** Intuitive GUI.
 
** Offers encryption and de-duplication.
 
** Software is generally free.
 
|http://www.crashplan.com/|{{AUR|crashplan}}}}
 
  
* {{App|Dropbox (in AUR)|client for the popular file-sharing service
+
{{Expansion|Fill in the blanks. ''Encrypted transfer'' column: What does ''Internet transfers only'' mean?}}
** A daemon monitors a specified directory, and uploads incremental changes to Dropbox.com. 
 
** Changes automatically show up on your other computers. 
 
** Includes file sharing and a public directory. 
 
** You can recover deleted files. 
 
** Community written add-ons. 
 
** Free accounts have 2GB storage.
 
|http://www.getdropbox.com|{{AUR|nautilus-dropbox}} – extension for [[Nautilus]], {{AUR|dropbox}} – without Gnome dependencies}}
 
  
* {{App|Jungle Disk (in AUR)|extension for Nautilus
+
These applications have been designed to centralize the backup of several machines connected to a network, through a server-client model. In general they are more complicated to deploy, compared to [[#Single machine]] solutions.
** Automatic backups to Amazon's servers.
 
** Not free, but very low prices.
 
|http://www.jungledisk.com/|{{AUR|nautilus-jungledisk}}}}
 
  
* {{App|Tarsnap (in community repo)|secure online backup service for BSD, Linux, OS X, Solaris, Cygwin
+
'''Specific legend:'''
** Compressed encrypted backups to Amazon S3 Servers
 
** Automate via cron
 
** Incremental backups
 
** Backup any files or directories
 
** Command line only client
 
** Very very low prices
 
** Pay only for usage; bandwidth and storage
 
|http://www.tarsnap.com|{{Pkg|tarsnap}}}}
 
  
* {{App|Wuala (in AUR)|secure online storage
+
* '''Control direction''': Pull: server logs into client. Push: client initiates backup session.
** Closed source, free and paid version available.
+
* '''Increment type''': the strategy used to reduce used space by deduplicating data (i.e., besides compression).
** Free account holds 2GB, (as of 2011.10.03.) disk space trading has been discontinued.
+
** '''file-based''': if a file is modified, the entire new version is stored at each snapshot.
** Includes file sharing and a public directory.
+
*** '''hard-links''': whether unmodified files are stored as hard links to previous versions.
** Incremental backup and sync are both supported.
+
** '''chunk-based''': only the modified ''parts'' of files are stored at each snapshot.
** Very convenient GUI.
 
** Social networking features.
 
** All files in the cloud are first encrypted locally.
 
|http://www.wuala.com/|{{AUR|wuala}}, {{AUR|wuala-daemon}} – to run as daemon}}
 
  
* {{App|Packrat|A simple, modular backup system that uses dar to take full/incremental backups of files and can store them locally, on a remote system via SSH, or on Amazon S3|http://www.zeroflux.org/projects|{{AUR|packrat}}}}
+
{| class="wikitable sortable" style="text-align:center"
 +
! Name
 +
! Package
 +
! Implementation
 +
! Control direction
 +
! Compressed storage
 +
! Encrypted storage
 +
! Delta transfer
 +
! Encrypted transfer
 +
! FS metadata
 +
! Easy access
 +
! Resumable
 +
! Handles renames
 +
! Increment type
 +
! CLI
 +
! Other interfaces
 +
! Licence
 +
! Other platforms
 +
! Maintained
 +
! Specificity
 +
|-
 +
! [[BackupPC]]
 +
| {{Pkg|backuppc}}
 +
| Perl
 +
| Pull
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Yes}}
 +
| ?
 +
| file-based, hard links [http://backuppc.sourceforge.net/faq/BackupPC.html#Backup-basics]
 +
| {{No}}
 +
| {{G|Web}}
 +
| GPLv2
 +
| Any (no client needed)
 +
| {{Yes}}
 +
| {{L|Identical files across backups of the same or different clients are stored only once.}}
 +
|-
 +
! [http://www.bacula.org Bacula]
 +
| [https://aur.archlinux.org/packages/?K=bacula bacula*] in [[AUR]]
 +
| C++
 +
| Pull
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| file-based [http://burp.grke.org/why.html]
 +
| {{Yes}}
 +
| {{G|GUI, Web}}
 +
| AGPLv3
 +
| Windows, macOS
 +
| {{Yes}}
 +
|
 +
|-
 +
! [[Bareos]]
 +
| [https://aur.archlinux.org/packages/?K=bareos bareos*] in [[AUR]]
 +
| C++ (Bacula fork)
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| AGPLv3
 +
|
 +
| {{Yes}}
 +
|
 +
|-
 +
! [http://burp.grke.org burp]
 +
| {{AUR|burp-backup}}
 +
| librsync
 +
| Push
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| chunk-based [http://burp.grke.org/why.html]
 +
| {{Yes}}
 +
| {{G|[https://git.ziirish.me/ziirish/burp-ui burp-ui]}}
 +
| AGPLv3
 +
| Windows, macOS
 +
| {{Yes}}
 +
|
 +
|-
 +
! [http://safekeep.sourceforge.net/ SafeKeep]
 +
| {{AUR|safekeep}}
 +
| rdiff-backup
 +
| Pull
 +
| {{No}}
 +
| {{No}}
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| chunk-based [http://safekeep.sourceforge.net/safekeep.html]
 +
| {{Yes}}
 +
| {{Yes}}
 +
| GPL
 +
|
 +
| {{No}}
 +
| {{L|Integrates with [[LVM]] and databases to create consistent backups. Bandwidth throttling.}}
 +
|-
 +
! [http://www.snebu.com Snebu]
 +
| {{AUR|snebu}}{{Broken package link|{{aur-mirror|snebu}}}}
 +
| C
 +
| Push or Pull
 +
| {{Yes}}
 +
| {{No}}
 +
| ?
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| file-based [http://www.snebu.com/#_concepts]
 +
| {{Yes}}
 +
| {{No}}
 +
| GPLv3
 +
|
 +
| ?
 +
| {{L|Supports arbitrary retention schedules.}}
 +
|-
 +
! [http://www.initzero.it/portal/soluzioni/software-open-source/synbak-universal-backup-system_2623.html Synbak]
 +
| {{Pkg|synbak}}
 +
| Multitool wrapper
 +
| ?
 +
| {{Yes}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| ?
 +
| ?
 +
| ?
 +
| ?
 +
| {{No}}
 +
| {{G|Web}}
 +
| GPLv3
 +
|
 +
| {{Yes}}
 +
| {{L|Unifies several backup methods.}}
 +
|-
 +
! [https://www.urbackup.org UrBackup]
 +
| [https://aur.archlinux.org/packages/?K=urbackup urbackup*] in [[AUR]]
 +
| C++
 +
| Pull
 +
| {{No}}
 +
| {{No}}
 +
| {{Yes}}
 +
| {{Y|Internet transfers only}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| {{Yes}}
 +
| file-based,hard-links and symlinks[http://blog.urbackup.org/156/symbolically-linking-directories-during-incremental-file-backups]/chunk-based CoW-Snapshots[http://blog.urbackup.org/83/file-backup-storage-with-btrfs-snapshots]
 +
| {{Yes}} (client)
 +
| {{G|GUI, Web}}
 +
| AGPLv3+
 +
| Windows, macOS
 +
| {{Yes}}
 +
| {{L|Identical files across backups of the same or different clients are stored only once. Integrates with LVM, dattobd and btrfs for file system snapshots.}}
 +
|}
  
=== Not incremental backups ===
+
== Version control systems ==
{{Poor writing}}
 
  
* {{App|Q7Z (in AUR)|P7Zip GUI for Linux, which attempts to simplify data compression and backup.  It can create the following archive types: 7z, BZip2, Zip, GZip, Tar.  Use Q7Z if you want to:
+
While [[Wikipedia:version control system|version control systems]] are mostly used for source code, they can track any files in a directory.
** Update existing archives quickly
 
** Backup multiple folders to a storage location
 
** Create or extract protected archives
 
** Lessen effort by using archiving profiles and lists
 
|http://k7z.sourceforge.net/|{{AUR|q7z}}}}
 
  
* "Just copy everything into one big archive, but support writing to cd/dvd"-type: [http://www2.backup-manager.org/ backup-manager] (in [https://aur.archlinux.org/packages.php?ID=4351 AUR])
+
See [[List of applications/Utilities#Version control systems]] and [[dotfiles]].
  
* [[Partclone]] -- back up and restore only the used blocks of a partition
+
== See also ==
  
* [http://redobackup.org/ Redo Backup and Recovery] - a nice liveCD that uses xPUD for the GUI and partclone for the backend.
 
 
* {{AUR|filesystem-backup}} – simple bash script (was originally a MySQL backup script) that creates a rolling 7 days, rolling 4 weeks and static monthly backups in tar format. Good for servers without a GUI.
 
 
* [http://clonezilla.org/ Clonezilla]
 
** Boots from live CD, USB flash drive, or PXE server
 
** Uses Partimage, ntfsclone, partclone, and dd,
 
** Compatability with many file systems (ext2, ext3, ext4, reiserfs, xfs, jfs of GNU/Linux, FAT, NTFS, and HFS+)
 
** Multicasting server to restore to many machines at once
 
** If file system is supported , only used blocks in harddisk are saved and restored. For unsupported file system, sector-to-sector copy is done
 
 
* [http://www.partimage.org/Main_Page Partimage]
 
* [http://www.fsarchiver.org/Main_Page Fsarchiver] (in extra repo)
 
** Support for basic file attributes (permissions, owner, ...)
 
** Support for multiple file-systems per archive
 
** Support for extended attributes (they are used by SELinux)
 
** Support the basic file-system attributes (label, uuid, block-size) for all linux file-systems
 
** Support for [http://www.fsarchiver.org/Cloning-ntfs ntfs filesystems] (ability to create flexible clones of windows partitions)
 
** Checksumming of everything which is written in the archive (headers, data blocks, whole files)
 
** Ability to restore an archive which is corrupt (it will just skip the current file)
 
** Multi-threaded lzo, gzip, bzip2, lzma [[Compression|compression]]: if you have a dual-core / quad-core it will use all the power of your cpu
 
** Support for splitting large archives into several files with a fixed maximum size
 
** Encryption of the archive using a password. Based on blowfish from libcrypto from openssl.
 
** Support backup of a mounted root filesystem (-A option)
 
 
* [http://www.mondorescue.org/ Mondo Rescue]
 
** Image-based backups, supporting Linux/Windows, I do not think it cares much about filesystems. Backs up MBR too, along with partition layout.
 
** Compression rate adjustable
 
** Can backup live systems (without having to halt it, unlike most, e.g. Clonezilla).
 
** Can split image over as many as you want (just set the size for a CD - 700 MB to backup to CD, etc.).
 
** Supports booting to a "live cd", in a sense, to perform a full restore.
 
** Can backup/restore over NFS, cd's, tape drives and what not.
 
** Can verify backups
 
** Neat-o ncurses interface. Plus a free progressbar!
 
** Customizable to all kinds of ends
 
** Can get a bit confusing/time consuming to get up and running, and verify everything works.
 
 
=== Versioning systems ===
 
These are traditionally used for keeping track of software development; but if you want to have a simple way to manage your config files in one directory, it might be a good solution.
 
 
* [http://www.selenic.com/mercurial/wiki/ mercurial] or [http://git-scm.com/ git] (both in extra repo)
 
* [http://eigenclass.org/hiki/gibak-backup-system-introduction gibak]: a backup system based on git. it also supports binary diffs (for binaries, e-books, pictures, multimedia files, etc). on the homepage there is a short usage advice. it is meant to backup only the $HOME directory. one could also backup other directories (like /etc) by changing the $HOME variable to point to that directory (though i do not really recommend this). gibak is handy for people who are familiar with git. it uses .gitignore to filter files and one can use the git commands to restore files, browse through logs, diffs, etc. if one needs a gui, it is also possible to use gitk or qgit to browse through commits or do whatever these interfaces support. get it from AUR: https://aur.archlinux.org/packages.php?ID=18318.
 
 
== External Resources ==
 
 
* [http://www.halfgaar.net/backing-up-unix Backing up Linux and other Unix(-like) systems]
 
* [http://www.halfgaar.net/backing-up-unix Backing up Linux and other Unix(-like) systems]
* [http://www.askapache.com/security/mirror-using-rsync-ssh.html Mirroring an Entire Site using Rsync over SSH]
+
* [https://github.com/restic/others Exhaustive list of backup solutions for Linux]
 +
* [http://www.si-journal.org/index.php/JSI/article/view/205 Performance comparison of five remote incremental backup tools: Rsync, Rdiff-backup, Duplicity, Areca and Link-Backup]
 +
* [https://www.askapache.com/security/mirror-rsync-ssh/ Mirroring an Entire Site using Rsync over SSH]
 +
* [https://github.com/artur-shaik/rsync-snapshots rsync-snapshots.sh] — Local and remote snapshot backup using rsync with hard links

Latest revision as of 17:31, 23 February 2020

This page lists and compares applications that synchronize data between two or more locations, and those that build on top of such functionality to make incremental copies of important data for backup purposes. Because of their relationship, the two groups share several traits that justify describing them in the same article.

Backup overview

Having backups of important data is a necessary measure to take, since human and machine processing errors are very likely to generate corruption as time passes, and also the physical media where the data is stored is inevitably destined to fail. In order to choose the best program for one's own needs, the following aspects should be considered:

  • The type of backup medium that is going to store the data, e.g. CD, DVD, remote server, external hard drive, etc.
  • The planned frequency of backups, e.g. daily, weekly, monthly, etc.
  • The features expected from the backup solution, e.g. compression, encryption, handles renames, etc.
  • The planned method to restore backups if needed.

Data synchronization

These applications simply keep directories synchronized between multiple locations/machines, in a "mirror" fashion. Nonetheless, most of them still allow storing and reverting to old revisions of modified or deleted files.

See also:

Legend

Name
The application name, linking to the ArchWiki article or the official website.
Package
A link to the package.
Implementation
The programming language, library, or utility that the application is based on.
Delta transfer
Only the modified parts of files are transferred.
Encrypted transfer
Data is encrypted by default when transferred over the network.
FS metadata
File system permissions and attributes are synchronized.
Resumable
The synchronization can be resumed if interrupted.
Handles renames
Moved/renamed files are detected and not stored or transferred twice. It typically means that a checksum of files or its chunks is computed. Applications missing this functionality can be supplemented by combining with hsyncAUR, which only synchronizes renames.
Version control
The old version of files are backed up (reverse incremental backup).
Change propagation
Specifies in how many directions changes can be propagated.
  • unidirectional means one-way synchronization of two locations,
  • bidirectional means two-way synchronization of two locations and
  • multidirectional means full synchronization of more than two locations.
Conflict resolution
The application handles file conflicts, either automatically or interactively, i.e. it does not silently discard conflicting files. This attribute does not apply to applications that only propagate changes in one direction.
FS monitoring
The application listens to file system events to trigger the synchronization.
CLI
The application provides a command-line interface.
Other interfaces
The application has the specified user interfaces, e.g. GUI, TUI, or web-based.
License
The license of the server and client applications.
Other platforms
Supported operating systems other than Linux.
Maintained
The project is maintained.
Specificity
Brief notes about special features that notably set the application apart from the others.

Table

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Explicitly list supported protocols / tools. Drop Encrypted transfer column because it depends on the protocol / tool. Simplify and color Change propagation column and move it leftwards. Split unmaintained into subsection? See also User:Larivact/drafts/Synchronization and backup programs#Synchronization. (Discuss in Talk:Synchronization and backup programs#)

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Fill in the blanks. (Discuss in Talk:Synchronization and backup programs#)
Name Package Implementation Delta transfer Encrypted transfer FS metadata Resumable Handles renames Version control Change propagation Conflict resolution FS monitoring CLI Other interfaces License Other platforms Maintained Specificity
FreeFileSync freefilesyncAUR C++ ? SFTP [1] ? ? Yes [2] Yes [3] unidirectional / multidirectional Yes ? No Yes GPL Windows, macOS Yes
git-annex git-annex Haskell, git rsync [4] rsync, others [5] No, but has custom non-FS metadata [6] Yes [7] Yes, content-addressable storage Yes multidirectional; with git remotes [8] renames conflicting files [9] optional, git-annex assistant Yes git-annex assistant GPLv3 macOS, Android (beta), Windows (beta) Yes Manage files with git
osync.sh osyncAUR Bash, based on rsync rsync rsync ? Yes No Yes bidirectional keeps multiple versions of a file [10] optional [11] Yes No BSD Yes
rclone rclone Go No [12] ? ? ? ? ? unidirectional [13] ? ? Yes RcloneBrowser MIT *BSD, Plan9, Solaris, Windows, macOS Yes Optimized for synchronization with cloud storage, behavior varies with the features supported by the remote location.
rdiff-backup rdiff-backup Python 2, librsync rsync rsync Yes ? No Yes unidirectional No Yes No GPL Win32 ?
Resilio Sync rslsyncAUR C++ Yes Yes ? Yes ? Yes multidirectional ? ? No Web Proprietary freemium FreeBSD, Windows, macOS, Android, iOS, Windows Phone, Amazon Kindle Fire Yes P2P sync
rsync rsync C Yes SSH or native protocol Yes Yes No
  • --link-dest with hard links [14]
  • --backup
unidirectional No Yes Rsync#Front-ends GPLv3 Win32 Yes Standard tool present on all Linux distributions.
SparkleShare sparkleshare C#, git Yes AES-256 [15] ? ? Yes Yes ? ? ? No Yes GPLv3 Windows, macOS Yes It can sync with any Git server over SSH.
Syncany syncanyAUR Java ? ? ? ? ? ? ? ? ? Yes Yes GPLv3 No [16]
Syncthing syncthing Go Yes [17] Yes [18] partial [19] Yes ? Yes [20], previous versions moved to archive folder multidirectional renames one file [21] Yes Yes Web, GTK MPL v2 BSD, Windows, macOS, Android, Kindle Paperwhite Yes P2P sync
Synkron synkronAUR C++ ? ? ? ? ? ? multidirectional ? ? No Qt GPLv2 Windows, macOS No
taskd taskd C++, Python Yes Yes ? Yes ? ? multidirectional ? No Yes No MIT Android Yes
Unison unison OCaml Yes Yes partial [22] optional [23] No Yes [24] bidirectional interactive No Yes GTK2 GPL FreeBSD, Windows, macOS, Android Yes [25]
Zaloha.sh bash No No optional No No No bidirectional interactive No Yes No MIT Windows under Cygwin Yes [26] Small and simple

Incremental backups

Applications that can do incremental backups remember and take into account what data has been backed up during the last run (so-called "diffs") and eliminate the need to have duplicates of unchanged data. Restoring the data to a certain point in time would require locating the last full backup and all the incremental backups from then to the moment when it is supposed to be restored. This sort of backup is useful for those who do it very often.

See also:

Legend:

  • Name: the application name, linking to the ArchWiki article or the official website.
  • Package: a link to the package.
  • Implementation: the programming language, library, or utility that the application is based on.
  • Compressed storage: compression is used for storage.
  • Encrypted storage: encryption is used for storage.
  • Delta transfer: only the modified parts of files are transferred.
  • Encrypted transfer: data is encrypted by default when transferred over a network.
  • FS metadata: file system permissions and attributes are backed up.
  • Easy access: the backup is stored plainly in the file system, or is mountable as such.
  • Resumable: the backup can be resumed without restarting it if interrupted.
  • Handles renames: moved/renamed files are detected and not stored or transferred twice; it typically means that a checksum is computed for files or chunks thereof.
  • CLI: the application is command-line driven, i.e. it is scriptable.
  • Other interfaces: the application has the specified user interfaces, e.g. GUI, TUI, or web-based.
  • Licence: the licence of the server and client applications.
  • Other platforms: supported operating systems other than Linux.
  • Maintained: whether the project is maintained.
  • Specificity: brief notes about special features that notably set the application apart from the others.

Single machine

These applications are aimed at backing up data from the machine they are installed on, although the backup destination can be located on an external machine or storage media.

Chunk-based increments

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Fill in the blanks. FS metadata column: What does Immature mean? Resumable column: What does Pausing only / Kinda through tar mean? (Discuss in Talk:Synchronization and backup programs#)

If a file is modified, these applications store only its changed parts at the next snapshot. Compared to #File-based increments applications, these are more space-efficient, especially when large files receive small modifications; on the other hand, the archived snapshots have to be opened with the backup application that created them, since the files have to be reconstructed from the stored binary diffs.

Name Package Implementation Compressed storage Encrypted storage Delta transfer Encrypted transfer FS metadata Easy access Resumable Handles renames CLI Other interfaces Licence Other platforms Maintained Specificity
Areca Backup arecaAUR Java Zip, Zip64 AES128, AES256 Yes Yes Yes No Pausing only No Yes Yes GPLv2 Windows Yes
BorgBackup borg borg-binAUR Python, C (Cython) lz4, zlib, lzma, zstd AES256 Yes SSH Yes [27] Yes [28] Yes [29] Yes Yes third party BSD *BSD, macOS, Windows (Cygwin / WSL)[30] Yes Deduplication based on variable length chunks; support both local and SSH-based remote backup destination.
btar btarAUR[broken link: archived in aur-mirror] C Yes Yes Yes Yes ? No ? ? Yes No GPLv3 Yes Redundancy, indexed extraction, multicore compression, input and output serialisation, tolerance to partial archive errors.
bup bup bup-gitAUR C, Python, git Yes No Yes Yes Immature Yes [31] pick up where you left off [32] Yes Yes bupsAUR GPLv2 NetBSD, Windows, macOS Yes Same storage format as git.
Duplicati duplicati-latestAUR C# Yes Yes Yes Yes Yes No Pausing only No Yes Yes LGPL Windows, macOS Yes
Duplicity duplicity librsync gzip gpg Yes Yes ? No Yes No Yes Yes GPL Yes
Kup Backup System kup rsync, bup front-end Yes Yes Yes Yes Immature Yes No Yes bup Qt GPLv2 Yes
obnam obnamAUR Python Yes GnuPG Yes Yes ? Yes checkpoints every 100MB ? Yes No GPLv3 No
restic restic restic-gitAUR Go No [33] AES-256 [34] Yes Yes Yes [35] Yes [36] Yes [37] Yes Yes No [38] BSD OpenBSD, Windows, macOS Yes Supports storage on various cloud services natively and through rclone.
ZBackup zbackupAUR C++ LZMA, LZO AES Yes Yes ? planned [39] No Kinda through tar Yes No GPLv2 Yes Repository consists of immutable files.

File-based increments

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Fill in the blanks. (Discuss in Talk:Synchronization and backup programs#)

If a file is modified, these applications store its new version entirely at the next snapshot. Compared to #Chunk-based increments applications, these are less space-efficient, especially when large files receive small modifications; on the other hand, often the archived snapshots can be opened without the need to have the backup application installed.

Specific legend:

  • Hard links: whether unmodified files are stored as hard links to previous versions.
Name Package Implementation Compressed storage Encrypted storage Delta transfer Encrypted transfer FS metadata Easy access Resumable Handles renames Hard links CLI Other interfaces Licence Other platforms Maintained Specificity
Back In Time backintimeAUR Python, rsync, diff No No rsync rsync rsync Yes No No Yes [40] Yes Qt GPLv2 Yes
DAR (Disk ARchive) darAUR C++ special archive format Yes Yes Yes ? ? ? ? No [41] Yes darguiAUR GPL FreeBSD, NetBSD, Windows, macOS Yes
Link-Backup link-backupAUR Python 2 No No ? SSH ? ? Yes Yes No [42] Yes No MIT No It copies itself to the server.
rdup rdupAUR C tar.gz gpg, blowfish and others ? ? ? Yes ? No Yes Yes No GPLv3 Yes [43] Set of command-line tools.
rsnapshot rsnapshot rsync No No Yes Yes ? ? ? ? Yes [44] Yes No GPLv2 Win32 Yes [45]
sbackup sbackupAUR Python gzip, bzip2 No ? SSH ? No No No No No GTK GPLv3 No
TimeShift timeshiftAUR rsync No No rsync rsync ? ? ? ? Yes No GTK GPLv3 Designed for full-system backups to dedicated devices. Yes

Network oriented

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Fill in the blanks. Encrypted transfer column: What does Internet transfers only mean? (Discuss in Talk:Synchronization and backup programs#)

These applications have been designed to centralize the backup of several machines connected to a network, through a server-client model. In general they are more complicated to deploy, compared to #Single machine solutions.

Specific legend:

  • Control direction: Pull: server logs into client. Push: client initiates backup session.
  • Increment type: the strategy used to reduce used space by deduplicating data (i.e., besides compression).
    • file-based: if a file is modified, the entire new version is stored at each snapshot.
      • hard-links: whether unmodified files are stored as hard links to previous versions.
    • chunk-based: only the modified parts of files are stored at each snapshot.
Name Package Implementation Control direction Compressed storage Encrypted storage Delta transfer Encrypted transfer FS metadata Easy access Resumable Handles renames Increment type CLI Other interfaces Licence Other platforms Maintained Specificity
BackupPC backuppc Perl Pull Yes No Yes Yes Yes No Yes ? file-based, hard links [46] No Web GPLv2 Any (no client needed) Yes Identical files across backups of the same or different clients are stored only once.
Bacula bacula* in AUR C++ Pull Yes Yes ? Yes ? ? Yes ? file-based [47] Yes GUI, Web AGPLv3 Windows, macOS Yes
Bareos bareos* in AUR C++ (Bacula fork) ? ? ? ? ? ? ? ? ? ? ? ? AGPLv3 Yes
burp burp-backupAUR librsync Push Yes Yes Yes Yes Yes ? Yes ? chunk-based [48] Yes burp-ui AGPLv3 Windows, macOS Yes
SafeKeep safekeepAUR rdiff-backup Pull No No ? Yes ? ? ? ? chunk-based [49] Yes Yes GPL No Integrates with LVM and databases to create consistent backups. Bandwidth throttling.
Snebu snebuAUR[broken link: archived in aur-mirror] C Push or Pull Yes No ? Yes ? ? ? ? file-based [50] Yes No GPLv3 ? Supports arbitrary retention schedules.
Synbak synbak Multitool wrapper ? Yes No Yes Yes Yes ? ? ? ? No Web GPLv3 Yes Unifies several backup methods.
UrBackup urbackup* in AUR C++ Pull No No Yes Internet transfers only Yes Yes Yes Yes file-based,hard-links and symlinks[51]/chunk-based CoW-Snapshots[52] Yes (client) GUI, Web AGPLv3+ Windows, macOS Yes Identical files across backups of the same or different clients are stored only once. Integrates with LVM, dattobd and btrfs for file system snapshots.

Version control systems

While version control systems are mostly used for source code, they can track any files in a directory.

See List of applications/Utilities#Version control systems and dotfiles.

See also