同步和备份程序

出自 ArchWiki

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

重要注意事项

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

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

数据同步

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

参见

图例

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

表格

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

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

本文或本节需要扩充。

原因: 填写空白。(在 Talk: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 assistant git-annex assistant 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 C SSH 或原生协议
  • --link-dest 与硬链接 [15]
  • --backup
Rsync#前端 GPLv3 Win32 所有 Linux 发行版上提供的标准工具。
SparkleShare sparkleshareAUR C#, git AES-256 [16] ? ? ? ? ? GPLv3 Windows, macOS 它可以与任何基于 SSH 的 Git 服务器同步。
Syncany syncanyAUR Java ? ? ? ? ? ? ? ? ? GPLv3 [17]
Syncthing syncthing Go [18] [19] 部分 [20] ? [21],之前的版本移动到存档文件夹 重命名一个文件 [22] Web, GTK MPL v2 BSD, Windows, macOS, Android, Kindle Paperwhite P2P 同步
Synkron synkronAUR C++ ? ? ? ? ? ? ? ? Qt GPLv2 Windows, macOS
taskd taskd C++, Python ? ? ? ? MIT Android
Unison unison OCaml 部分 [23] (小节 "perms") 可选 [24] (小节 "speeding") 否 - "Unison 将重命名视为删除和一个单独的创建" [25] (小节 "caveats") [26] (小节 "backups") 交互式 是,自 2.48 版本之前就内置于 Linux 和 Windows 中:[27] 对于 macOS,请参阅 "unison-fsmonitor":[28] GTK2 GPL FreeBSD, Windows, macOS, Android [29]
yarsync yarsyncAUR Python,基于 rsync rsync rsync 是,对于仓库快照(每个文件都有一个版本) 向 / 重命名一个文件 GPLv3 类 UNIX 系统或备份驱动器,类似 git 的 CLI。
Zaloha2.sh bash SSH+SCP 可选 交互式 MIT Cygwin 下的 Windows [30] 小巧而简单

增量备份

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

参见

图例

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

单机

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

基于块的增量

本文或本节需要扩充。

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

如果文件被修改,这些应用程序会在下一个快照中仅存储其更改的部分。与 #基于文件的增量 应用程序相比,这些应用程序更节省空间,尤其是在大型文件收到少量修改时;另一方面,存档的快照必须使用创建它们的备份应用程序打开,因为文件必须从存储的二进制差异中重建。

名称 软件包 实现 压缩存储 加密存储 差异传输 加密传输 FS 元数据 易于访问 可恢复 多线程 处理重命名 CLI 其他界面 许可证 其他平台 维护状态 重复数据删除 特殊性
Areca Backup arecaAUR Java Zip, Zip64 AES128, AES256 仅暂停 [31] GPLv2 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 的远程备份目标。
bup bup C, Python, git 不成熟 [37] 从上次停止的地方继续 [38] thesafeAUR GPLv2 NetBSD, Windows, macOS 与 git 相同的存储格式。
Duplicacy duplicacyAUR Go [39] [40] [41] [42] duplicacy-webAUR 自定义 (非自由) FreeBSD, macOS, Windows
Duplicati duplicati-canary-binAUR C# 仅暂停 [43] LGPL Windows, macOS
Duplicity duplicity librsync gzip gpg ? GPL
Kopia kopiaAUR Go, Javascript 前端 APACHE Windows, macOS, OpenBSD
Kup Backup System kup rsync, bup 前端 不成熟 ? bup Qt GPLv2
Restic restic Go 强制 (AES-256) [44] [45] [46] [47] [48] BSD OpenBSD, Windows, macOS [49] 原生支持在各种云服务上存储,并通过 rclone 支持。
ZBackup zbackupAUR C++ LZMA, LZO AES ? 计划中 [50] ? 有点像通过 tar GPLv2 仓库由不可变文件组成。

基于文件的增量

本文或本节需要扩充。

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

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

特定图例

  • 硬链接:未修改的文件是否存储为指向先前版本的硬链接。
名称 软件包 实现 压缩存储 加密存储 差异传输 加密传输 FS 元数据 易于访问 可恢复 处理重命名 硬链接 CLI 其他界面 许可证 其他平台 维护状态 特殊性
Back In Time backintimeAUR Python, rsync, diff rsync rsync rsync [51] Qt GPLv2
DAR (Disk ARchive) darAUR C++ 特殊存档格式 ? ? ? ? [52] darguiAUR GPL FreeBSD, NetBSD, Windows, macOS
rdup rdupAUR C tar.gz gpg, blowfish 和其他 ? ? ? ? GPLv3 [53] 一组命令行工具。
rsnapshot rsnapshot rsync ? ? ? ? [54] GPLv2 Win32 [55]
timeshift timeshift rsync rsync rsync ? ? ? ? GTK GPLv3 专为全系统备份到专用设备而设计。

面向网络

本文或本节需要扩充。

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

这些应用程序旨在集中备份连接到网络的几台机器,通过服务器-客户端模型。一般来说,与 #单机 解决方案相比,它们的部署更加复杂。

特定图例

  • 控制方向:拉取:服务器登录到客户端。推送:客户端启动备份会话。
  • 增量类型:用于通过重复数据删除来减少已用空间的策略(即,除了压缩之外)。
    • 基于文件:如果文件被修改,则在每个快照中存储整个新版本。
      • 硬链接:未修改的文件是否存储为指向先前版本的硬链接。
    • 基于块:在每个快照中仅存储文件的已修改部分
名称 软件包 实现 控制方向 压缩存储 加密存储 差异传输 加密传输 FS 元数据 易于访问 可恢复 处理重命名 增量类型 CLI 其他界面 许可证 其他平台 维护状态 特殊性
BackupPC backuppc Perl 拉取 ? 基于文件,硬链接 [56] Web GPLv2 任何 (无需客户端) 在同一或不同客户端的备份中,相同的文件只存储一次。
Bacula bacula* C++ 拉取 ? ? ? ? 基于文件 [57] GUI, Web AGPLv3 Windows, macOS
Bareos bareos* C++ (Bacula 分支) ? ? ? ? ? ? ? ? ? ? ? ? AGPLv3
burp burp-backupAUR librsync 推送 ? ? 基于块 [58] burp-ui AGPLv3 Windows, macOS
SafeKeep safekeepAUR rdiff-backup 拉取 ? ? ? ? ? 基于块 [59] GPL LVM 和数据库集成以创建一致的备份。带宽限制。
Synbak synbak 多工具包装器 ? ? ? ? ? Web GPLv3 统一了多种备份方法。
UrBackup urbackup* C++ 拉取 仅互联网传输 基于文件、硬链接和符号链接[60]/基于块的 CoW 快照[61] 是 (客户端) GUI, Web AGPLv3+ Windows, macOS 在同一或不同客户端的备份中,相同的文件只存储一次。与 LVM、dattobd 和 btrfs 集成以进行文件系统快照。

版本控制系统

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

参见 List of applications/Utilities#Version control systemsdotfiles

参见