同步和备份程序
(重定向自 Git-annex)
本页面列出并比较了在两个或多个位置之间同步数据的应用程序,以及在这些功能之上构建的用于备份目的的重要数据的增量副本的应用程序。由于它们之间的关系,这两组程序共享一些特性,因此有理由在同一篇文章中描述它们。
重要注意事项
为了选择最适合个人需求的程序,应考虑以下方面
- 将要存储数据的备份介质类型,例如 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 系统或备份驱动器,CLI 类似于 git。 | |
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 进行本地和远程快照备份