同步和備份程序
這個頁面列出並比較了在兩個或多個位置之間同步數據的應用程式,以及在此功能之上建立的以備份為目的的製作重要數據的增量副本的應用程式。因為它們的關係,這兩組程序共享許多特徵所有在同一篇文章裡解釋描述它們.
備份概覽[編輯 | 編輯原始碼]
備份重要數據是必須採取的措施,因為人和機器的處理錯誤隨著時間推移非常可能產生損壞,並且存儲數據的物理媒體也不可避免的註定損壞. 為了選擇滿足每個人的需求的程序,下面的一些問題要考慮:
- 存儲數據的備份媒介, 比如. CD, DVD, 遠程伺服器, 外部硬碟, 等的種類.
- 計劃的備份頻率, 比如. 每天, 每周, 每月, 等等.
- 希望從備份獲取的功能,比如,壓縮,加密,處理重命名等.
- 如果需要的話存儲重命名的方式.
數據同步[編輯 | 編輯原始碼]
這些應用做的只是以一種「鏡像」的方式在多地點/多機器間保持目錄同步。 儘管如此,它們中的大多數仍然運行存儲和轉換到老版本的修改過的或者刪除的文件.
也可查閱:
- List of applications/Utilities#File synchronization and backup
- 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的遠程備份目的地. |
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 | 是 | 庫由不可變文件組成. |
基於文件的增量[編輯 | 編輯原始碼]
如果文件被修改, 這些文件會在下次快照存儲整個版本的文件. 與 #基於塊的增量應用相比, 它們對存儲空間的利用率不夠高, 特別是備份大文件但是修改小時; 另一方面, 通常存檔的快照沒有備份程序安裝的時候也能打開.
特殊說明:
- 硬連結: 是否將為修改的文件存儲為之前版本的硬連結.
名字 | 包 | 實現 | 壓縮存儲 | 加密存儲 | 增量傳輸 | 加密傳輸 | 文件系統元數據 | 易訪問 | 可恢復 | 處理重命名 | 硬連結 | 命令行 | 其他界面 | 證書 | 其它平台 | 維護 | 特性 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | 專門為完整系統備份到專用設備而設計的. | 是 |
面向網絡[編輯 | 編輯原始碼]
這些程序被設計為旨在集中連結到網絡的多台計算機的備份, 通過一種伺服器-客戶端模型. 通常,它們部署更複雜, 與 #單機器解決方案相比.
特殊說明:
- 控制方向: 拉取: 伺服器登錄客戶端. 推動: 客戶端啟動會話.
- 增量類型: 通過刪除重複數據來減少已用空間的策略 (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 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
- Mirroring an Entire Site using Rsync over SSH
- rsync-snapshot.sh — Local and remote snapshot backup using rsync with hard links