User:Larivact/drafts/Synchronization and backup programs
Features to consider:
- file metadata
- symbolic and hard links
- sparse files
Questions to help you decide on a solution:
- Where do you store your backup? External storage medium or remote server?
- Do you need to synchronize files between devices?
Synchronization
See also:
- List of applications/Internet#Cloud synchronization clients
- Wikipedia:Comparison of file synchronization software
The table is sorted by multiple ways, CLI, one-way, GUI and the officiality of the package (Extra > Community > AUR).
Name | Package | Written in | Protocols / Tools | multiple ways | one-way | CLI | GUI | Versioning | License |
---|---|---|---|---|---|---|---|---|---|
git-annex | git-annex | Haskell | ADB, BitTorrent, rsync, rclone, HTTP, and more | Yes | Yes | git-annex(1) | Web | moves and links tracked files to their hash, symlinks are tracked with git | GPLv3 |
Syncthing | syncthing | Go | BEP + TLS | Yes | No | syncthing(1) | Yes | only keeps one old version or time stamps filenames[1] | MPLv2 |
FreeFileSync | freefilesyncAUR | C++ | SMB, MTP, FTP, SFTP, FTPS | Yes | Yes | No | Yes | time-stamped filenames | GPL |
SparkleShare | sparkleshare | C# | protocols supported by git | Yes | No | No | Yes | commits files to a git repository | GPLv3 |
Resilio Sync | rslsyncAUR | C++ | modified version of BitTorrent + AES-128 | Yes | No | No | Yes | numbered filenames | proprietary freemium |
Unison | unison | OCaml | custom protocol or custom rsync implementation | two-way | Yes | Yes | Yes | numbered filenames | GPL |
osync | osyncAUR | Bash | rsync | two-way | No | Yes | No | only keeps one old version or time stamps filenames[2] | BSD |
rsync | rsync | C | SSH or custom protocol | No | Yes | rsync(1) | Yes | GPLv3 | |
rclone | rclone | Go | HTTP, FTP, SFTP, and 31 cloud services | No | Yes | rclone(1) | rclone-browserAUR | If you use --backup . |
MIT |
rdiff-backup | rdiff-backup | Python 2 | rsync (librsync) | No | Yes | rdiff-backup(1) | No | GPL |
Incremental backups
See also Wikipedia:Incremental backup.
Single machine
Chunk-based increments
Name | Package | Implementation | CLI | GUI |
---|---|---|---|---|
Areca Backup | arecaAUR | Java | Yes | Yes |
BorgBackup | borg | Python, C (Cython) | borg(1) | borgweb-gitAUR |
bup | bup, bup-gitAUR | C, Python, git | bup(1) | bupsAUR |
Duplicati | duplicati-latestAUR | C# | Yes | Web-based |
Duplicity | duplicity | librsync | duplicity(1) | deja-dup |
Kup Backup System | kup | rsync / bup front-end | No | Yes |
restic | restic, restic-gitAUR | Go | restic(1) | No |
ZBackup | zbackupAUR | C++ | Yes | No |
File-based increments
Name | Package | Implementation | CLI | GUI |
---|---|---|---|---|
Back In Time | backintimeAUR | Python, rsync, diff | Yes | Yes |
DAR | darAUR | C++ | Yes | darguiAUR |
rdup | rdupAUR | C | Yes | No |
rsnapshot | rsnapshot | rsync | Yes | No |
Timeshift | timeshiftAUR | rsync | No | Yes |
Network oriented
Name | Package | Implementation | CLI | GUI |
---|---|---|---|---|
BackupPC | backuppc | Perl | No | Web |
Bacula | bacula* in AUR | C++ | Yes | Yes |
Burp | burp-backupAUR | librsync | Yes | Web |
Synbak | synbakAUR | ? | No | Web |
UrBackup | urbackup* in AUR | C++ | Yes | Yes |