同步和备份程序

来自 ArchWiki
(重定向自备份程序

本页列出并比较了在两个或多个位置之间同步数据的应用程序,以及那些在此功能之上构建以进行重要数据增量副本以进行备份的应用程序。由于它们之间的关系,这两组程序具有一些共同的特性,因此可以在同一篇文章中描述它们。

重要注意事项

为了选择最适合自身需求的程序,应考虑以下方面:

  • 将要存储数据的备份介质类型,例如 CD、DVD、远程服务器、外部硬盘驱动器等。
  • 计划的备份频率,例如每天、每周、每月等。
  • 备份解决方案的预期功能,例如压缩、加密、处理重命名等。
  • 如果需要,计划的恢复备份方法。

数据同步

这些应用程序只是以“镜像”方式保持多个位置/机器之间的目录同步。尽管如此,它们中的大多数仍然允许存储和恢复到已修改或已删除文件的旧版本。

参见

图例

名称
应用程序名称,链接到 ArchWiki 文章或官方网站。
软件包
软件包的链接。
实现
应用程序所基于的编程语言、库或实用程序。
增量传输
仅传输文件的已修改部分
加密传输
通过网络传输时,默认情况下数据会被加密。
FS 元数据
文件系统权限和属性已同步。
可恢复
如果中断,可以恢复同步。
处理重命名
检测到已移动/重命名的文件,并且不会存储或传输两次。这通常意味着计算文件或其块的校验和。缺少此功能的应用程序可以通过与 hsyncAUR 结合使用来补充,后者同步重命名。
版本控制
文件的旧版本会被备份(反向增量备份)。
变更传播
指定变更可以传播的方向数量。
  • 单向表示两个位置的单向同步,
  • 双向表示两个位置的双向同步,以及
  • 多向表示两个以上位置的完全同步。
冲突解决
应用程序处理文件冲突,无论是自动还是交互式,即它不会静默丢弃冲突文件。此属性不适用于仅在一个方向上传播更改的应用程序。
FS 监控
应用程序监听文件系统事件以触发同步。
CLI
应用程序提供命令行界面。
其他界面
应用程序具有指定的用户界面,例如 GUI、TUI 或基于 Web 的界面。
许可证
服务器和客户端应用程序的许可证。
其他平台
除 Linux 之外,还支持的操作系统。
维护状态
项目是否正在维护。
特性
关于显著地使应用程序与其他应用程序区分开来的特殊功能的简要说明。

表格

本文或本节需要改进语言、wiki 语法或风格。请参阅 Help:Style 以供参考。

原因: 明确列出支持的协议/工具。删除加密传输列,因为它取决于协议/工具。简化并着色变更传播列并将其向左移动。将未维护状态拆分为子章节?另请参阅 User:Larivact/drafts/Synchronization and backup programs#Synchronization。(在 Synchronization and backup programs 的讨论页 中讨论)

本文或本节需要扩充。

原因: 填写空白。(在 Synchronization and backup programs 的讨论页 中讨论)
名称 软件包 实现 增量传输 加密传输 FS 元数据 可恢复 处理重命名 版本控制 变更传播 冲突解决 FS 监控 CLI 其他界面 许可证 其他平台 维护状态 特性
FreeFileSync freefilesync-binAUR C++ ? SFTP [1] ? ? [2] [3] 向 / ? GPL Windows, macOS
git-annex git-annex Haskell, git rsync [4] rsync, 其他 [5] 否,但有自定义的非 FS 元数据 [6] [7] 是,内容可寻址存储 向;使用 git 远程仓库 [8] 重命名冲突文件 [9] 可选,git-annex 助手 git-annex 助手 GPLv3 macOS, Android (beta), Windows (beta) 使用 git 管理文件
osync.sh osyncAUR Bash,基于 rsync rsync rsync ? 保留文件的多个版本 [10] 可选 [11] BSD
rclone rclone Go [12] [13] ? ? ? ? 向 / [14] ? ? Web(实验性附加组件) MIT *BSD, Plan9, Solaris, Windows, macOS 针对与云存储同步进行了优化,行为随远程位置支持的功能而变化。
rdiff-backup rdiff-backupAUR Python, librsync rsync rsync ? GPLv2 Win32
Resilio Sync rslsyncAUR C++ ? ? ? ? Web 专有免费增值 FreeBSD, Windows, macOS, Android, iOS, Windows Phone, Amazon Kindle Fire P2P 同步
rsync rsync rsync C
  • SSH 或原生协议
  • --link-dest 与硬链接 [15]
--backup GPLv3 Win32 Rsync#前端
所有 Linux 发行版上可用的标准工具。 SparkleShare sparkleshareAUR C#, git ? ? ? ? ? GPLv3 Windows, macOS AES-256 [16]
它可以与任何基于 SSH 的 Git 服务器同步。 Syncany syncanyAUR ? ? ? ? ? ? ? ? ? GPLv3 Java
[17] Syncthing Go syncthing [18] [19] ? 部分 [20] [21],以前的版本移动到存档文件夹 重命名一个文件 [22] Web, GTK MPL v2 P2P 同步
BSD, Windows, macOS, Android, Kindle Paperwhite Synkron C++ ? ? ? ? ? ? ? ? synkronAUR GPLv2 Windows, macOS
Qt Qt taskd ? ? ? ? MIT C++, Python
Android Unison unison OCaml 部分 [23](“perms”小节) 可选 [24](“speeding”小节) 否 - “Unison 将重命名视为删除和一个单独的创建” [25](“caveats”小节) [26](“backups”小节) 交互式 是,自 2.48 版本之前就已内置于 Linux 和 Windows 中:[27] 对于 macOS,请参阅“unison-fsmonitor”:[28] GPL GTK2 FreeBSD, Windows, macOS, Android
[29] yarsync yarsyncAUR rsync rsync Python, 基于 rsync 向 / 是,对于仓库快照(每个文件只有一个版本) GPLv3 重命名一个文件
类 UNIX 系统或备份驱动器,类似 git 的 CLI。 Zaloha2.sh bash SSH+SCP [26](“backups”小节) MIT 可选 Cygwin 下的 Windows [30]

小巧而简单

增量备份

参见

  • 可以进行增量备份的应用程序会记住并考虑上次运行期间备份的数据(所谓的“差异”),并消除重复未更改数据的需要。将数据恢复到特定时间点将需要找到上次完整备份以及从那时起到应该恢复时刻的所有增量备份。这种备份对于那些经常进行备份的人很有用。
  • Wikipedia:备份软件列表
  • Wikipedia:备份软件比较

图例

  • Wikipedia:在线备份服务比较
  • 名称:应用程序名称,链接到 ArchWiki 文章或官方网站。
  • 软件包:软件包的链接。
  • 实现:应用程序所基于的编程语言、库或实用程序。
  • 压缩存储:存储使用压缩。
  • 加密存储:存储使用加密。
  • 增量传输:仅传输文件的已修改部分
  • 加密传输:通过网络传输时,默认情况下数据会被加密。
  • FS 元数据:文件系统权限和属性已备份。
  • 易于访问:备份以明文形式存储在文件系统中,或者可以挂载为文件系统。
  • 可恢复:如果中断,可以恢复备份,而无需重新启动。
  • 多线程:备份可以同时在多个执行线程中完成。
  • 处理重命名:检测到已移动/重命名的文件,并且不会存储或传输两次;这通常意味着计算文件或其块的校验和。
  • CLI:应用程序是命令行驱动的,即可编写脚本。
  • 其他界面:应用程序具有指定的用户界面,例如 GUI、TUI 或基于 Web 的界面。
  • 许可证:服务器和客户端应用程序的许可证。
  • 其他平台:除 Linux 之外,还支持的操作系统。
  • 维护状态:项目是否正在维护。
  • 重复数据删除:程序是否支持重复数据删除已保存的文件

特性:关于显著地使应用程序与其他应用程序区分开来的特殊功能的简要说明。

单机

这些应用程序旨在备份安装它们的机器上的数据,尽管备份目标可以位于外部机器或存储介质上。

本文或本节需要扩充。

基于块的增量

原因: 填写空白。FS 元数据列:不成熟是什么意思?可恢复列:仅暂停 / 有点像通过 tar 是什么意思?(在 Synchronization and backup programs 的讨论页 中讨论)

名称 软件包 实现 如果文件被修改,这些应用程序在下一个快照中仅存储其更改的部分。与 #基于文件的增量 应用程序相比,这些应用程序更节省空间,尤其是在大型文件收到少量修改时;另一方面,存档的快照必须使用创建它们的备份应用程序打开,因为文件必须从存储的二进制差异中重建。 压缩存储 增量传输 加密传输 FS 元数据 加密存储 可恢复 易于访问 处理重命名 CLI 其他界面 多线程 其他平台 维护状态 许可证 特性
重复数据删除 Areca Backup syncanyAUR arecaAUR Zip, Zip64 AES128, AES256 仅暂停 GPLv2 [31]
Windows Borg backup borg Python, C (Cython) lz4, zlib, lzma, zstd AES256 SSH [32] [33] [34] [35] BSD 第三方 *BSD, macOS, Windows (Cygwin / WSL)[36] 是,基于可变长度块。
支持本地和基于 SSH 的远程备份目标。 支持本地和基于 SSH 的远程备份目标。 bup C, Python, git 不成熟 [37] 从上次停止的地方继续 [38] GPLv2 thesafeAUR NetBSD, Windows, macOS
与 git 相同的存储格式。 Duplicacy Go duplicacyAUR [39] [40] [41] [42] duplicacy-webAUR 自定义(非自由)
FreeBSD, macOS, Windows Duplicati duplicati-canary-binAUR AES128, AES256 C# [43] Windows, macOS
LGPL Duplicity duplicity librsync gzip ? GPL
gpg Kopia kopiaAUR Go, Javascript 前端 APACHE
Windows, macOS, OpenBSD Kup Backup System kup C, Python, git ? 支持本地和基于 SSH 的远程备份目标。 synkronAUR GPLv2
rsync, bup 前端 Restic Go restic 强制性 (AES-256) [44] [45] [46] [47] BSD [48] OpenBSD, Windows, macOS [49]
原生支持在各种云服务上存储,并通过 rclone 支持。 ZBackup C++ zbackupAUR LZMA, LZO ? AES ? 计划中 [50] GPLv2 有点像通过 tar

仓库由不可变文件组成。

本文或本节需要扩充。

原因: 填写空白。(在 Synchronization and backup programs 的讨论页 中讨论)

基于文件的增量

如果文件被修改,这些应用程序在下一个快照中存储其完整的新版本。与 #基于块的增量 应用程序相比,这些应用程序空间效率较低,尤其是在大型文件收到少量修改时;另一方面,通常可以打开存档的快照,而无需安装备份应用程序。

  • 特定图例
名称 软件包 实现 如果文件被修改,这些应用程序在下一个快照中仅存储其更改的部分。与 #基于文件的增量 应用程序相比,这些应用程序更节省空间,尤其是在大型文件收到少量修改时;另一方面,存档的快照必须使用创建它们的备份应用程序打开,因为文件必须从存储的二进制差异中重建。 压缩存储 增量传输 加密传输 FS 元数据 加密存储 可恢复 处理重命名 硬链接:未修改的文件是否存储为指向先前版本的硬链接。 CLI 其他界面 多线程 其他平台 维护状态 特性
硬链接 Back In Time backintimeAUR rsync rsync rsync Python, rsync, diff synkronAUR GPLv2
[51] DAR (Disk ARchive) C++ darAUR ? ? ? ? 特殊存档格式 [52] GPL darguiAUR
FreeBSD, NetBSD, Windows, macOS rdup rsync rdupAUR tar.gz ? ? ? ? GPLv3 gpg, blowfish 和其他 [53]
命令行工具集。 命令行工具集。 rsync ? ? ? ? rsnapshot GPLv2 Win32 [54]
[55] [55] rsync rsync rsync ? ? ? ? timeshift GPLv3 GTK

专为全系统备份到专用设备而设计。

本文或本节需要扩充。

面向网络

原因: 填写空白。加密传输列:仅互联网传输是什么意思?(在 Synchronization and backup programs 的讨论页 中讨论)

如果文件被修改,这些应用程序在下一个快照中存储其完整的新版本。与 #基于块的增量 应用程序相比,这些应用程序空间效率较低,尤其是在大型文件收到少量修改时;另一方面,通常可以打开存档的快照,而无需安装备份应用程序。

  • 这些应用程序旨在集中备份连接到网络的几台机器,通过服务器-客户端模型。一般来说,与 #单机 解决方案相比,它们部署起来更加复杂。
  • 控制方向:拉取:服务器登录到客户端。推送:客户端发起备份会话。
    • 增量类型:用于通过重复数据删除数据来减少已用空间的策略(即,除了压缩之外)。
      • 基于文件:如果文件被修改,则在每个快照中存储整个新版本。
    • 硬链接:未修改的文件是否存储为指向先前版本的硬链接。
名称 软件包 实现 基于块:在每个快照中仅存储文件的已修改部分 如果文件被修改,这些应用程序在下一个快照中仅存储其更改的部分。与 #基于文件的增量 应用程序相比,这些应用程序更节省空间,尤其是在大型文件收到少量修改时;另一方面,存档的快照必须使用创建它们的备份应用程序打开,因为文件必须从存储的二进制差异中重建。 压缩存储 增量传输 加密传输 FS 元数据 加密存储 可恢复 处理重命名 控制方向 CLI 其他界面 多线程 其他平台 维护状态 特性
增量类型 BackupPC backuppc Perl ? 拉取 Web GPLv2 基于文件,硬链接 [56] 任何(不需要客户端)
相同或不同客户端的备份中相同的文件仅存储一次。 Bacula C++ Perl ? ? ? ? bacula* 基于文件 [57] GUI, Web Windows, macOS
AGPLv3 Bareos bareos* ? ? ? ? ? ? ? ? ? ? ? ? GUI, Web
C++ (Bacula 分支) burp duplicity burp-backupAUR ? ? 推送 基于块 [58] GUI, Web Windows, macOS
burp-ui SafeKeep rdiff-backup Perl ? ? ? ? ? safekeepAUR GPL 基于块 [59]
LVM 和数据库集成以创建一致的备份。带宽限制。 Synbak synbak ? ? ? ? ? Web GPLv3 多工具包装器
统一了多种备份方法。 UrBackup C++ Perl urbackup* 仅互联网传输 基于文件,硬链接和符号链接[60]/基于块的 CoW 快照[61] 基于文件 [57] 是(客户端) Windows, macOS AGPLv3+

相同或不同客户端的备份中相同的文件仅存储一次。与 LVM、dattobd 和 btrfs 集成以进行文件系统快照。

版本控制系统

虽然版本控制系统主要用于源代码,但它们可以跟踪目录中的任何文件。

参见

rsync-snapshots.sh — 使用 rsync 和硬链接的本地和远程快照备份