同步和备份程序
(重定向自备份程序)
本页列出并比较了在两个或多个位置之间同步数据的应用程序,以及那些在此功能之上构建以进行重要数据增量副本以进行备份的应用程序。由于它们之间的关系,这两组程序具有一些共同的特性,因此可以在同一篇文章中描述它们。
重要注意事项
为了选择最适合自身需求的程序,应考虑以下方面:
- 将要存储数据的备份介质类型,例如 CD、DVD、远程服务器、外部硬盘驱动器等。
- 计划的备份频率,例如每天、每周、每月等。
- 备份解决方案的预期功能,例如压缩、加密、处理重命名等。
- 如果需要,计划的恢复备份方法。
数据同步
这些应用程序只是以“镜像”方式保持多个位置/机器之间的目录同步。尽管如此,它们中的大多数仍然允许存储和恢复到已修改或已删除文件的旧版本。
参见
图例
- 名称
- 应用程序名称,链接到 ArchWiki 文章或官方网站。
- 软件包
- 软件包的链接。
- 实现
- 应用程序所基于的编程语言、库或实用程序。
- 增量传输
- 仅传输文件的已修改部分。
- 加密传输
- 通过网络传输时,默认情况下数据会被加密。
- FS 元数据
- 文件系统权限和属性已同步。
- 可恢复
- 如果中断,可以恢复同步。
- 处理重命名
- 检测到已移动/重命名的文件,并且不会存储或传输两次。这通常意味着计算文件或其块的校验和。缺少此功能的应用程序可以通过与 hsyncAUR 结合使用来补充,后者仅同步重命名。
- 版本控制
- 文件的旧版本会被备份(反向增量备份)。
- 变更传播
- 指定变更可以传播的方向数量。
- 单向表示两个位置的单向同步,
- 双向表示两个位置的双向同步,以及
- 多向表示两个以上位置的完全同步。
- 冲突解决
- 应用程序处理文件冲突,无论是自动还是交互式,即它不会静默丢弃冲突文件。此属性不适用于仅在一个方向上传播更改的应用程序。
- FS 监控
- 应用程序监听文件系统事件以触发同步。
- CLI
- 应用程序提供命令行界面。
- 其他界面
- 应用程序具有指定的用户界面,例如 GUI、TUI 或基于 Web 的界面。
- 许可证
- 服务器和客户端应用程序的许可证。
- 其他平台
- 除 Linux 之外,还支持的操作系统。
- 维护状态
- 项目是否正在维护。
- 特性
- 关于显著地使应用程序与其他应用程序区分开来的特殊功能的简要说明。
表格
名称 | 软件包 | 实现 | 增量传输 | 加密传输 | 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 | 是 | 是 | 否 |
|
单向 | 否 | 是 | --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 |
仓库由不可变文件组成。
基于文件的增量
如果文件被修改,这些应用程序在下一个快照中存储其完整的新版本。与 #基于块的增量 应用程序相比,这些应用程序空间效率较低,尤其是在大型文件收到少量修改时;另一方面,通常可以打开存档的快照,而无需安装备份应用程序。
- 特定图例
名称 | 软件包 | 实现 | 如果文件被修改,这些应用程序在下一个快照中仅存储其更改的部分。与 #基于文件的增量 应用程序相比,这些应用程序更节省空间,尤其是在大型文件收到少量修改时;另一方面,存档的快照必须使用创建它们的备份应用程序打开,因为文件必须从存储的二进制差异中重建。 | 压缩存储 | 增量传输 | 加密传输 | 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 集成以进行文件系统快照。
版本控制系统
虽然版本控制系统主要用于源代码,但它们可以跟踪目录中的任何文件。
参见
- 参见 应用程序列表/实用工具#版本控制系统 和 点文件。
- 备份 Linux 和其他类 Unix 系统
- Linux 的详尽备份解决方案列表
- 使用 Rsync over SSH 镜像整个站点