Synchronization and backup programs (简体中文)
这个页面列出并比较了在两个或多个位置之间同步数据的应用程序,以及在此功能之上建立的以备份为目的的制作重要数据的增量副本的应用程序。因为它们的关系,这两组程序共享许多特征所有在同一篇文章里解释描述它们.
备份概览
备份重要数据是必须采取的措施,因为人和机器的处理错误随着时间推移非常可能产生损坏,并且存储数据的物理媒体也不可避免的注定损坏. 为了选择满足每个人的需求的程序,下面的一些问题要考虑:
- 存储数据的备份媒介, 比如. CD, DVD, 远程服务器, 外部硬盘, 等的种类.
- 计划的备份频率, 比如. 每天, 每周, 每月, 等等.
- 希望从备份获取的功能,比如,压缩,加密,处理重命名等.
- 如果需要的话存储重命名的方式.
数据同步
这些应用做的只是以一种“镜像”的方式在多地点/多机器间保持目录同步。 尽管如此,它们中的大多数仍然运行存储和转换到老版本的修改过的或者删除的文件.
也可查阅:
- List of applications/Utilities#File synchronization
- List of applications/Internet#Cloud synchronization clients
- Wikipedia:Comparison of file synchronization software
说明
- 名字
- 应用的名字,链接到archwiki文章或者官方网站.
- 包
- 到包的链接.
- 实现
- 应用程序基于的编程语言,库或者实用程序.
- 增量传输
- 仅仅文件修改过的 部分 会被传输.
- 加密传输
- 当通过网络传输时默认加密.
- FS元数据
- 文件的权限和属性是同步的 .
- 可恢复
- 同步能继续,如果被打断的话.
- 处理重命名
- 移动过/或重命名过的文件会被监测并不会存储或者传输两次. 它通常意味着会计算文件或文件块的校验和.程序如果没有这项功能能通过和 hsyncAUR结合起来来实现, 这个程序 只做 同步命名.
- 版本控制
- 旧版本的文件也被备份了 (反向增量备份).
- 改变传播
- 指定能传播多少地点.
- 单向 意味着两地点的单向传播,
- 双向 意味着两地点的双向传播
- 多向 意味着多地点的完全同步.
- 冲突解决方案
- 这个程序会要么自动要么交互的处理文件冲突, 即是它不静默的丢弃冲突文件. 这项属性不适应于只支持单方向传播的程序.
- FS监听
- 应用程序监听文件系统的变化来触发同步.
- CLI
- 应用程序提供命令行界面.
- 其它界面
- 应用有的特殊用户界面, 比如. GUI, TUI, 或者基于网页.
- 证书
- 服务器程序和客户端程序的证书.
- 其它平台
- 不仅仅支持Linux.
- 维护
- 项目还在被维护.
- 特性
- 特别是能将应用程序和其它的区分开的特性的说明.
表格
名字 | 安装包 | 实现 | 增量传输 | 加密传输 | FS元数据 | 可恢复 | 处理重命名 | 版本控制 | 改变传播 | 冲突解决方案 | FS监听 | CLI | 其它界面 | 证书 | 其它平台 | 维护 | 特性 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FreeFileSync | freefilesyncAUR | C++ | ? | SFTP [1] | ? | ? | Yes [2] | Yes [3] | unidirectional / multidirectional | 是 | ? | 否 | 是 | GPL | Windows, macOS | 是 | |
git-annex | git-annex | Haskell, git | rsync [4] | rsync [5] | ? | ? | ? | 是 | multidirectional; with git remotes [6] | 重命名冲突文件 [7] | ? | 是 | git-annex assistant | GPLv3 | macOS, Android | 是 | 用git管理文件 |
osync.sh | osyncAUR | Bash, based on rsync | rsync | rsync | ? | 是 | 否 | 是 | bidirectional | 保存多版本的文件 [8] | 可选的 [9] | 是 | 否 | BSD | 是 | ||
rclone | rclone | Go | 否 [10] | ? | ? | ? | ? | ? | unidirectional [11] | ? | ? | 是 | RcloneBrowser | MIT | *BSD, Plan9, Solaris, Windows, macOS | 是 | 针对与云存储同步进行了优化, 表现因远程位置支持的特性而异. |
rdiff-backup | rdiff-backup | Python 2, librsync | rsync | rsync | 是 | ? | 否 | 是 | unidirectional | 否 | 是 | 否 | GPL | Win32 | ? | ||
Resilio Sync | rslsyncAUR | C++ | 是 | 是 | ? | 是 | ? | 是 | multidirectional | ? | ? | 否 | Web | Proprietary freemium | FreeBSD, Windows, macOS, Android, iOS, Windows Phone, Amazon Kindle Fire | 是 | P2P 同步 |
Rsync (简体中文) | rsync | C | 是 | SSH or native protocol | 是 | 是 | 否 |
|
unidirectional | 否 | 是 | Rsync#Front-ends | GPLv3 | Win32 | 是 | 在所有Linux发行本上的标准工具. | |
SparkleShare | sparkleshare | C#, git | 是 | AES-256 [13] | ? | ? | 是 | 是 | ? | ? | ? | 否 | 是 | GPLv3 | Windows, macOS | 是 | 能通过SSH和任何Git服务器同步. |
Syncany | syncanyAUR | Java | ? | ? | ? | ? | ? | ? | ? | ? | ? | 是 | 是 | GPLv3 | 否 [14] | ||
Syncthing | syncthing | Go | Yes [15] | Yes [16] | partial [17] | Yes | ? | Yes [18], previous versions moved to archive folder | multidirectional | 重命名一个文件 [19] | Yes | 是 | Web, GTK | MPL v2 | BSD, Windows, macOS, Android, Kindle Paperwhite | 是 | P2P sync |
Synkron | synkronAUR | C++ | ? | ? | ? | ? | ? | ? | multidirectional | ? | ? | 否 | Qt | GPLv2 | Windows, macOS | No | |
taskd | taskd | C++, Python | 是 | 是 | ? | 是 | ? | ? | multidirectional | ? | 否 | 是 | 否 | MIT | Android | 是 | |
Unison (简体中文) | unison | OCaml | 是 | 是 | partial [20] | optional [21] | 否 | Yes [22] | bidirectional | interactive | 否 | 是 | GTK2 | GPL | FreeBSD, Windows, macOS, Android | Yes [23] |
增量备份
那些能 增量备份的程序会记住并考虑上次账户运行期间备份的数据(所谓的 "差异") 并消除重复未更改数据的需要.将数据还原到特定时间点需要定位上次完整备份和所有增量备份到赢应恢复的时刻 . 这种备份方法对经常备份的人很有用.
可查阅:
- Wikipedia:List of backup software
- Wikipedia:Comparison of backup software
- Wikipedia:Comparison of online backup services
说明:
- 名字: 应用名字, 链接到archwiki文章或者官方网站.
- 包: 链接到安装包.
- 实现: 程序基于的编程语言、库或者实用工具.
- 压缩存储: 用作存储的压缩方法.
- 加密存储: 加密被用作存储.
- 增量传输: 只有文件修改过的 部分 会被传输.
- 加密传输: 当通过网络传输时数据默认加密.
- 文件系统元数据: 文件系统权限和属性也备份了.
- 易访问: 备份明确地存储在文件系统中,或者可以挂载.
- 可恢复: 如果中断备份可以不重启继续.
- 处理重命名: 移动/重命名的文件会被监测并不会存储或转移两次; 它通常意味着它会计算文件或文件块的校验和.
- 命令行: 应用程序是命令行驱动的,即它可用来编写脚本.
- 其它界面: 这个应用有其它特定的用户界面,比如 GUI, TUI, 或者基于网络的接口.
- 证书: 服务器或客户端程序的证书.
- 其它平台: 除了Linux之外支持的操作系统.
- 维护: 这个项目是否还在维护.
- 特性: 特别是能将应用程序和其它的区分开的特性的说明.
单机器
这些程序针对把数据从它们安装的机器备份, 尽管备份目的可能在外部机器或者是存储媒体.
基于块的增量
如果一个文件被修改, 下次快照这些程序只存储修改过的 部分 . 与 #基于文件的增量 的程序相比, 它们在磁盘方面效率更高, 特别是大文件但是只有小修改; 另一方面,存档的快照必须能用创造它们的备份程序打开 , 因为文件必须从二进制差异中重建.
名字 | 包 | 实现 | 压缩存储 | 加密存储 | 增量传输 | 加密传输 | 文件元数据 | 容易访问 | 可恢复 | 处理重命名 | 命令行 | 其他界面 | 证书 | 其它平台 | 维护 | 特性 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Areca Backup | arecaAUR | Java | Zip, Zip64 | AES128, AES256 | 是 | 是 | 是 | 否 | 只可以暂停 | 否 | 是 | 是 | GPLv2 | Windows | 是 | |
BorgBackup | borg | Python, C (Cython) | lz4, zlib, lzma, zstd | AES256 | 是 | SSH | 是 [24] | 是 [25] | 是 [26] | 是 | 是 | third party | BSD | *BSD, macOS, Windows (Cygwin / WSL)[27] | 是 | 基于可变长度块的重复数据删除;支持本地和基于ssh的远程备份目的地. |
btar | btarAUR[损坏的链接:package not found] | C | 是 | 是 | 是 | 是 | ? | 否 | ? | ? | 是 | 否 | GPLv3 | 是 | 冗余、索引提取、多核压缩、输入和输出的序列化、对部分存档错误的容忍度. | |
bup | bup bup-gitAUR | C, Python, git | 是 | 否 | 是 | 是 | 不成熟 | 是 [28] | 在你离开的地方继续 [29] | 是 | 是 | bupsAUR | GPLv2 | NetBSD, Windows, macOS | 是 | 和git一样的存储格式. |
Duplicati | duplicati-latestAUR | C# | 是 | 是 | 是 | 是 | scheduled for 2.0 release | 否 | Pausing only | 否 | 是 | 是 | LGPL | Windows | 是 | |
Duplicity | duplicity | librsync | gzip | gpg | 是 | 是 | ? | 否 | 是 | 否 | 是 | Yes | GPL | 是 | ||
Kup Backup System | kup | rsync, bup front-end | 是 | 是 | 是 | 是 | Immature | 是 | 否 | 是 | bup | Qt | GPLv2 | 是 | ||
obnam | obnamAUR | Python | 是 | GnuPG | 是 | 是 | ? | 是 | checkpoints every 100MB | ? | 是 | 否 | GPLv3 | No | ||
restic | restic restic-gitAUR | Go | 否 [30] | AES-256 [31] | 是 | 是 | 是 [32] | 是 [33] | 是 [34] | 是 | 是 | 否 [35] | BSD | OpenBSD, Windows, macOS | 是 | 支持多种通过本地或通过 rclone的云服务存储. |
ZBackup | zbackupAUR | C++ | LZMA, LZO | AES | 是 | 是 | ? | planned [36] | 否 | Kinda through tar | 是 | 否 | GPLv2 | 是 | 库由不可变文件组成. |
基于文件的增量
如果文件被修改, 这些文件会在下次快照存储整个版本的文件. 与 #基于块的增量 应用相比, 它们对存储空间的利用率不够高, 特别是备份大文件但是修改小时; 另一方面, 通常存档的快照没有备份程序安装的时候也能打开.
特殊说明:
- 硬链接: 是否将为修改的文件存储为之前版本的硬链接.
名字 | 包 | 实现 | 压缩存储 | 加密存储 | 增量传输 | 加密传输 | 文件系统元数据 | 易访问 | 可恢复 | 处理重命名 | 硬链接 | 命令行 | 其他界面 | 证书 | 其它平台 | 维护 | 特性 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Back In Time | backintimeAUR | Python, rsync, diff | 否 | 否 | rsync | rsync | rsync | 是 | 否 | 否 | Yes [37][失效链接 2020-08-06 ⓘ] | 是 | Qt | GPLv2 | 是 | ||
DAR (Disk ARchive) | darAUR | C++ | special archive format | 是 | 是 | 是 | ? | ? | ? | ? | No [38] | 是 | darguiAUR | GPL | FreeBSD, NetBSD, Windows, macOS | 是 | |
Link-Backup | link-backupAUR | Python 2 | 否 | 否 | ? | SSH | ? | ? | 是 | 是 | No [39] | 是 | 否 | MIT | 否 | 把它自己复制到服务器. | |
rdup | rdupAUR | C | tar.gz | gpg, blowfish and others | ? | ? | ? | 是 | ? | 否 | 是 | 是 | 否 | GPLv3 | 否 | 一套命令行工具. | |
rsnapshot | rsnapshot | rsync | 否 | 否 | 是 | 是 | ? | ? | ? | ? | Yes [40] | 是 | 否 | GPLv2 | Win32 | No [41] | |
sbackup | sbackupAUR | Python | gzip, bzip2 | 否 | ? | SSH | ? | 否 | 否 | 否 | 否 | 否 | GTK | GPLv3 | 否 | ||
TimeShift | timeshiftAUR | rsync | 否 | 否 | rsync | rsync | ? | ? | ? | ? | 是 | 否 | GTK | GPLv3 | 专门为完整系统备份到专用设备而设计的. | 是 |
面向网络
这些程序被设计为旨在集中链接到网络的多台计算机的备份, 通过一种服务器-客户端模型. 通常,它们部署更复杂, 与 #单机器 解决方案相比.
特殊说明:
- 控制方向: 拉取: 服务器登录客户端. 推动: 客户端启动会话.
-
增量类型: 通过删除重复数据来减少已用空间的策略 (i.e., 除了压缩之外).
-
基于文件: 如果文件被修改, 整个新版本将存在每个快照中.
- 硬链接: 未修改的文件是否被存为之前版本的硬链接.
- 基于块: 只有文件修改过的 部分 被存在每个快照中.
-
基于文件: 如果文件被修改, 整个新版本将存在每个快照中.
名字 | 包 | 实现 | 控制方向 | 压缩存储 | 加密存储 | 增量传输 | 加密传输 | 文件系统元数据 | 易访问 | 可恢复 | 处理重命名 | 增量种类 | 命令行 | 其它界面 | 证书 | 其它平台 | 维护 | 特性 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BackupPC | backuppc | Perl | Pull | 是 | 否 | 是 | 是 | 是 | 否 | 是 | ? | 基于文件, 硬链接 [42] | 否 | Web | GPLv2 | 任何平台 (不需要客户端) | 是 | 相同或不同客户端的备份中相同文件仅存储一次. |
Bacula | bacula* in AUR | C++ | Pull | 是 | 是 | ? | 是 | ? | ? | 是 | ? | 基于文件 [43] | 是 | GUI, Web | AGPLv3 | Windows, macOS | 是 | |
burp | burp-backupAUR | librsync | Push | 是 | 是 | 是 | 是 | 是 | ? | 是 | ? | 基于块 [44] | 是 | burp-ui | AGPLv3 | Windows, macOS | 是 | |
SafeKeep | safekeepAUR | rdiff-backup | Pull | 否 | 否 | ? | 是 | ? | ? | ? | ? | 基于块 [45] | 是 | 是 | GPL | 否 | 与 LVM 和数据库集成以创建一致的备份. 带宽限制. | |
Snebu | snebuAUR[损坏的链接:package not found] | C | Push or Pull | 是 | 否 | ? | 是 | ? | ? | ? | ? | 基于文件 [46] | 是 | 否 | GPLv3 | ? | 支持任意保留计划. | |
Synbak | synbak | Multitool wrapper | ? | 是 | 否 | 是 | 是 | 是 | ? | ? | ? | ? | 否 | Web | GPLv3 | 是 | 统一许多备份方法. | |
UrBackup | urbackup* in AUR | C++ | Pull | 否 | 否 | 是 | Internet transfers only | 是 | 是 | 是 | 是 | 基于文件,硬链接和符号链接[47]/基于块的 CoW-Snapshots[48] | 是 (client) | GUI, Web | AGPLv3+ | Windows, macOS | 是 | 相同或不同客户端的相同文件的备份只存储一次. 在文件系统快照里集成了 LVM, dattobd 和 btrfs . |
版本控制系统
虽然 版本控制系统大多数时候用于源代码, 但它们可以跟踪目录里的任何文件.
查阅 List of applications/Utilities#Version control systems 和 dotfiles.
也可查阅
- Backing up Linux and other Unix(-like) systems
- Exhaustive list of backup solutions for Linux
- Performance comparison of five remote incremental backup tools: Rsync, Rdiff-backup, Duplicity, Areca and Link-Backup[失效链接 2021-05-17 ⓘ]
- Mirroring an Entire Site using Rsync over SSH
- rsync-snapshot.sh — Local and remote snapshot backup using rsync with hard links