同步和备份程序
(重定向自 备份程序)
本页面列出并比较了在两个或多个位置之间同步数据的应用程序,以及那些在此功能之上构建以进行重要数据增量副本以进行备份的应用程序。由于它们的关系,这两组共享一些特性,证明在同一篇文章中描述它们是合理的。
重要注意事项
为了选择最适合自身需求的程序,应考虑以下方面
- 将要存储数据的备份介质类型,例如 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 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 或原生协议 | 是 | 是 | 否 |
|
单向 | 否 | 是 | 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 元数据 | 易于访问 | 可恢复 | 多线程 | 处理重命名 | 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 | 否 | 是 | 存储库由不可变文件组成。 |
基于文件的增量
如果文件被修改,这些应用程序在下一个快照中完整地存储其新版本。与 #基于块的增量 应用程序相比,这些应用程序的空间效率较低,尤其是在大型文件进行少量修改时;另一方面,通常存档的快照可以在不需要安装备份应用程序的情况下打开。
特定图例
- 硬链接:未修改的文件是否存储为指向先前版本的硬链接。
名称 | 软件包 | 实现 | 压缩存储 | 加密存储 | 增量传输 | 加密传输 | 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 | 专为完整系统备份到专用设备而设计。 | 是 |
面向网络
这些应用程序旨在集中备份连接到网络的若干机器,通过服务器-客户端模型。一般来说,与 #单机 解决方案相比,它们部署起来更复杂。
特定图例
- 控制方向:拉取:服务器登录到客户端。推送:客户端发起备份会话。
- 增量类型:用于通过重复数据删除来减少占用空间的策略(即,除了压缩之外)。
- 基于文件:如果文件被修改,则在每个快照中存储整个新版本。
- 硬链接:未修改的文件是否存储为指向先前版本的硬链接。
- 基于块:仅文件的修改部分存储在每个快照中。
- 基于文件:如果文件被修改,则在每个快照中存储整个新版本。
名称 | 软件包 | 实现 | 控制方向 | 压缩存储 | 加密存储 | 增量传输 | 加密传输 | 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 集成以实现文件系统快照。 |
版本控制系统
虽然 版本控制系统 主要用于源代码,但它们可以跟踪目录中的任何文件。
参见 应用程序列表/实用程序#版本控制系统 和 点文件。
参见
- 备份 Linux 和其他类 Unix 系统
- Linux 备份解决方案的详尽列表
- 使用 Rsync over SSH 镜像整个站点
- rsync-snapshots.sh — 使用带有硬链接的 rsync 进行本地和远程快照备份