User:Larivact/drafts/Synchronization and backup programs

From ArchWiki
Comment: WIP draft for 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

This article or section needs expansion.

Reason: Fill blanks. Migrate conflict resolution, handles renames, FS metadata, platforms. (Discuss in User talk:Larivact/drafts/Synchronization and backup programs)

See also:

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

See also