同步和备份程序

来自 Arch Linux 中文维基

这个页面列出并比较了在两个或多个位置之间同步数据的应用程序,以及在此功能之上建立的以备份为目的的制作重要数据的增量副本的应用程序。因为它们的关系,这两组程序共享许多特征所有在同一篇文章里解释描述它们.

备份概览[编辑 | 编辑源代码]

备份重要数据是必须采取的措施,因为人和机器的处理错误随着时间推移非常可能产生损坏,并且存储数据的物理媒体也不可避免的注定损坏. 为了选择满足每个人的需求的程序,下面的一些问题要考虑:

  • 存储数据的备份媒介, 比如. CD, DVD, 远程服务器, 外部硬盘, 等的种类.
  • 计划的备份频率, 比如. 每天, 每周, 每月, 等等.
  • 希望从备份获取的功能,比如,压缩,加密,处理重命名等.
  • 如果需要的话存储重命名的方式.

数据同步[编辑 | 编辑源代码]

这些应用做的只是以一种“镜像”的方式在多地点/多机器间保持目录同步。 尽管如此,它们中的大多数仍然运行存储和转换到老版本的修改过的或者删除的文件.

也可查阅:

说明[编辑 | 编辑源代码]

名字
应用的名字,链接到archwiki文章或者官方网站.
到包的链接.
实现
应用程序基于的编程语言,库或者实用程序.
增量传输
仅仅文件修改过的 部分 会被传输.
加密传输
当通过网络传输时默认加密.
FS元数据
文件的权限和属性是同步的 .
可恢复
同步能继续,如果被打断的话.
处理重命名
移动过/或重命名过的文件会被监测并不会存储或者传输两次. 它通常意味着会计算文件或文件块的校验和.程序如果没有这项功能能通过和 hsyncAUR结合起来来实现, 这个程序 只做 同步命名.
版本控制
旧版本的文件也被备份了 (反向增量备份).
改变传播
指定能传播多少地点.
  • 单向 意味着两地点的单向传播,
  • 双向 意味着两地点的双向传播
  • 多向 意味着多地点的完全同步.
冲突解决方案
这个程序会要么自动要么交互的处理文件冲突, 即是它不静默的丢弃冲突文件. 这项属性不适应于只支持单方向传播的程序.
FS监听
应用程序监听文件系统的变化来触发同步.
CLI
应用程序提供命令行界面.
其它界面
应用有的特殊用户界面, 比如. GUI, TUI, 或者基于网页.
证书
服务器程序和客户端程序的证书.
其它平台
不仅仅支持Linux.
维护
项目还在被维护.
特性
特别是能将应用程序和其它的区分开的特性的说明.

表格[编辑 | 编辑源代码]

本文或本章节的语言、语法或风格需要改进。参考:Help:Style

原因:明确列出了支持的协议 / 工具. 丢弃 加密传输 这一列 因为它取决于协议/工具. 简化并给改变传输 列上色 并把它向左移. 拆分未维护到子分区? 查阅 User:Larivact/drafts/Synchronization and backup programs#Synchronization.(在Talk:同步和备份程序讨论)

这篇文章的某些内容需要扩充。

原因: 空的地方还需要填写. (在 Talk:同步和备份程序 中讨论)
名字 安装包 实现 增量传输 加密传输 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
  • --link-dest with hard links [12]
  • --backup
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]

增量备份[编辑 | 编辑源代码]

那些能 增量备份的程序会记住并考虑上次账户运行期间备份的数据(所谓的 "差异") 并消除重复未更改数据的需要.将数据还原到特定时间点需要定位上次完整备份和所有增量备份到赢应恢复的时刻 . 这种备份方法对经常备份的人很有用.

可查阅:

说明:

  • 名字: 应用名字, 链接到archwiki文章或者官方网站.
  • : 链接到安装包.
  • 实现: 程序基于的编程语言、库或者实用工具.
  • 压缩存储: 用作存储的压缩方法.
  • 加密存储: 加密被用作存储.
  • 增量传输: 只有文件修改过的 部分 会被传输.
  • 加密传输: 当通过网络传输时数据默认加密.
  • 文件系统元数据: 文件系统权限和属性也备份了.
  • 易访问: 备份明确地存储在文件系统中,或者可以挂载.
  • 可恢复: 如果中断备份可以不重启继续.
  • 处理重命名: 移动/重命名的文件会被监测并不会存储或转移两次; 它通常意味着它会计算文件或文件块的校验和.
  • 命令行: 应用程序是命令行驱动的,即它可用来编写脚本.
  • 其它界面: 这个应用有其它特定的用户界面,比如 GUI, TUI, 或者基于网络的接口.
  • 证书: 服务器或客户端程序的证书.
  • 其它平台: 除了Linux之外支持的操作系统.
  • 维护: 这个项目是否还在维护.
  • 特性: 特别是能将应用程序和其它的区分开的特性的说明.

单机器[编辑 | 编辑源代码]

这些程序针对把数据从它们安装的机器备份, 尽管备份目的可能在外部机器或者是存储媒体.

基于块的增量[编辑 | 编辑源代码]

这篇文章的某些内容需要扩充。

原因: 你可以补全空的地方. 比如文件元数据 列: 不成熟 是什么意思? 可恢复 列: 只可以暂停 / 有点通过tar 是什么意思? (在 Talk:同步和备份程序 中讨论)

如果一个文件被修改, 下次快照这些程序只存储修改过的 部分 . 与 #基于文件的增量 的程序相比, 它们在磁盘方面效率更高, 特别是大文件但是只有小修改; 另一方面,存档的快照必须能用创造它们的备份程序打开 , 因为文件必须从二进制差异中重建.

名字 实现 压缩存储 加密存储 增量传输 加密传输 文件元数据 容易访问 可恢复 处理重命名 命令行 其他界面 证书 其它平台 维护 特性
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的远程备份目的地.
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
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 库由不可变文件组成.

基于文件的增量[编辑 | 编辑源代码]

这篇文章的某些内容需要扩充。

原因: 你可以填空的地方. (在 Talk:同步和备份程序 中讨论)

如果文件被修改, 这些文件会在下次快照存储整个版本的文件. 与 #基于块的增量 应用相比, 它们对存储空间的利用率不够高, 特别是备份大文件但是修改小时; 另一方面, 通常存档的快照没有备份程序安装的时候也能打开.

特殊说明:

  • 硬链接: 是否将为修改的文件存储为之前版本的硬链接.
名字 实现 压缩存储 加密存储 增量传输 加密传输 文件系统元数据 易访问 可恢复 处理重命名 硬链接 命令行 其他界面 证书 其它平台 维护 特性
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[失效链接 2022-09-23 ⓘ] link-backupAUR Python 2 ? SSH ? ? No [39][失效链接 2022-09-23 ⓘ] MIT 把它自己复制到服务器.
rdup rdupAUR C tar.gz gpg, blowfish and others ? ? ? ? GPLv3 一套命令行工具.
rsnapshot rsnapshot rsync ? ? ? ? Yes [40] GPLv2 Win32 No [41]
TimeShift timeshiftAUR rsync rsync rsync ? ? ? ? GTK GPLv3 专门为完整系统备份到专用设备而设计的.

面向网络[编辑 | 编辑源代码]

这篇文章的某些内容需要扩充。

原因: 你可以填写空的地方. 比如加密传输 列: 只能网络传输是什么意思? (在 Talk:同步和备份程序 中讨论)

这些程序被设计为旨在集中链接到网络的多台计算机的备份, 通过一种服务器-客户端模型. 通常,它们部署更复杂, 与 #单机器 解决方案相比.

特殊说明:

  • 控制方向: 拉取: 服务器登录客户端. 推动: 客户端启动会话.
  • 增量类型: 通过删除重复数据来减少已用空间的策略 (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 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 systemsdotfiles.

也可查阅[编辑 | 编辑源代码]