Syncthing vs Resilio Sync vs Nextcloud 文件同步服務對比

首先,這是我一直同時在用的 3 個開源同步服務。html

那爲何我要同時用着多個同步服務呢?主要是由於它們各有優點,有一些無可替代的功能。linux

  • Resilio Sync 高級版提供的 可選擇性同步,讓我用 0KB 的佔用空間,能夠獲得全部文件的目錄和名稱。在我須要的時候,又能以極快的速度下載到本地。這是個我使用極少的功能,可是倒是使用中最爲爽快的一個功能。分享和下載的時候,我都毫無負擔,由於它們都不存在於本地,我只用下載本身想要的文件。
  • Nextcloud 提供的文件 分享 可讓你有更多的選擇以及權限控制,只用一條 url 連接,你就能夠簡單的分享給須要的人,並且還能提供文件操做動態,你能夠知道文件在何時作了哪些變更,這對你但願監控文件動態的時候很是好用。而且它還提供許多不一樣類型的 App 拓展,其中包括 Rss程序Keepass管理程序音樂播放視頻播放 等諸多功能。
  • Syncthing 這是我 我的文件同步 的主力服務,我用它進行跨設備同步和備份。它是個人 Inbox 文件夾,收集着每臺設備上的數據,我用它來進行 數據配置 等文件的同步。它的優勢也很是簡單,安裝簡單,網絡要求低,提供完善的版本控制。我只須要後臺開啓,配置好,就無需再擔憂。

固然,我並不僅僅只依賴上面 3 個同步服務(固然rsync、webdav、ftp我也用,但這不在討論範圍內。),我還搭配電腦的備份服務進行備份。家庭文件服務器還會有快照計劃,重要文件也會定時冷備份。這樣,我才能任性的對待數據,並不再用擔憂它們會消失不見了。web

: )docker

下面,咱們進入正題,對比一下 3 款同步服務的優缺點吧。數據庫

1. 平臺覆蓋

平臺 Syncthing Resilio Sync Nextcloud
iOS ✔︎ ✔︎
Android ✔︎ ✔︎ ✔︎
macOS ✔︎ ✔︎ ✔︎
Windows ✔︎ ✔︎ ✔︎
Linux ✔︎ ✔︎ ✔︎
Linux Arm ✔︎ ✔︎ ✔︎
Docker x86 ✔︎ ✔︎ ✔︎
Docker Arm ✔︎
Nas System ✔︎ ✔︎

PS: 主要統計的是官方支持的平臺。第三方方案,不計入統計。安全

  • 這裏比較遺憾的是 Syncthing 並無 iOS 客戶端,曾經有一款可是如今已經下架了,我手機端主要用 Nextcloud 偶爾用 Resilio Sync(畢竟只同步大文件用)。
  • docker arm 不支持的服務須要自行構建(第三方也可),一般支持 linux arm 的都支持 docker arm,可是官方只構建了 x86 版本。
  • NextcloudNas 版本極可能是有的,可是 Nextcloud 官方沒介紹,NAS 系統 官方庫通常也有下載,畢竟這個服務很廣泛了。

2. 功能對比

功能 Syncthing Resilio Sync Nextcloud
版本控制 階段性版本控制 回收站 限客戶端
網絡環境 1. 同步無限制
2. 中區中轉服
務器稀少
1. 同步無限制
2. 設備發現需
國外環境
1. 同步無限制
2. 應用下載需
國外環境
3. 部分應用依
賴國外服務
同步速度 1. 內網滿帶寬
2. 外網依賴中
轉服務器帶寬
1. 內網滿帶寬
2. 外網依賴同
步設備帶寬總和
1. 內網滿帶寬
2. 外網依賴部
署服務器帶寬
WebDav ✔︎
選擇同步 ✔︎(高級版)
文件加密 ✔︎(加密文件夾) ✔︎(需設置)
同步加密 ✔︎ ✔︎ ✔︎(需啓用https)
部署難度
文件分享 ✔︎(只能整庫分享) ✔︎(只能整庫分享) ✔︎
權限管理 ✔︎ ✔︎ ✔︎

2.1 網絡問題

這裏重點討論一下主要影響你們使用的網絡問題。服務器

2.1.1 Syncthing 的同步速度爲何那麼慢?

先說結論,緣由是因爲對 Syncthing 開放且距離你最近的 中繼服務器 過少而且速度較慢致使的。
PS: https://relays.syncthing.net/ 這裏能夠看到開放的 中繼服務器 列表。(我的使用的中繼服務器能夠不開放)網絡

最開始用的時候,我並無以爲這個問題影響使用,由於數據量不大(都是配置文件),也就沒有在乎。
自從 Resilio Sync 由於衆所周知的問題掛了之後,我把大量同步任務也遷移到了 Syncthing,其中就包括了 虛擬機多媒體文件下載的系統文件備份文件 等大文件數據。但這就要了命了,幾十 kb 的速度同步至少按周來算,並且是不關機的那種。這時候,我就想了 2 個辦法先緩緩。app

  1. 經過複製/同步到目標機器的方式,把全部文件傳輸過去。(這種方式不治本,由於虛擬機變化產生的文件很大,若是不常常變更,你能夠採用此方法。)
  2. 修改 文件拉取順序小文件優先。在文件夾 選項->高級->文件拉取順序 中修改。

-------------------- (想治本的同窗看這裏)我是善良友好的分割線 --------------------測試

固然以上方法都是不解決根本問題的。真正解決問題的辦法是,自建中繼服務器(劃重點)。

  • 如何構建 Syncthing Relay Server。(官方英文文檔)
  • 如何設置 Relaying。(官方英文文檔)
  • 我在測試過的的docker鏡像 t4skforce/syncthing-relay。(構建源碼可參考)

礙於篇幅,這裏不能教你們如何去部署。先提供一些資料給你們參考。 : )

2.1.2 Resilio Sync 爲何沒法找到設備?

先說結論,緣由是 Resilio Synctrackers and relays 服務器沒法訪問。

解決辦法也很簡單,讓沒法訪問的地址走代理就能夠了。

參考圖:

圖片描述

礙於篇幅,細節就略略略了。 : )

  • Nextcloud 爲何沒法訪問應用頁面下載應用?

    先說結論,緣由是由於應用商店沒法訪問。

    1. 你能夠自行去 GitHub 下載 App 項目。並解壓到 __NEXTCLOUD-PATH__/apps 目錄下,按照項目教程進行部署。
    2. 解決部署服務器沒法訪問 Nextcloud App Servier 沒法訪問的問題。

礙於篇幅,略略略。 : )

2.2 版本控制

既然和數據有關,那最懼怕的是什麼?

那固然就是數據 同步異常、數據丟失、數據誤刪、意外致使數據丟失 等數據消失不見的嚴重問題了。

-------------------- (結論看這裏)我是善良友好的分割線 --------------------

這裏不講如何保障數據,直接說結論:以上軟件所提供的版本控制,都沒法徹底保證數據同步過程當中不丟失。

因此不要認爲有了版本控制,數據就能夠隨意處理了。有時候你想找回某個數據還真不必定找獲得。(自行搭配快照、副本、備份。)

-------------------- (評測看這裏)我是善良友好的分割線 --------------------

  • Syncthing 提供的 版本控制 很是多,能夠適應多種場景下使用。其中 階段版本控制 提供了 小時 級別的歷史記錄,最大程度的保障數據安全,而且提供了歷史記錄查看器,能夠很方便的查看歷史記錄,並恢復。基本上,它能夠適應全部我的同步需求,而且同步過程當中對數據也相對安全。

    參考圖:

    圖片描述

    圖片描述

  • Resilio Sync 並不提供版本控制功能,只有最簡單的回收站機制。甚至你也不清楚有沒有放入回收站。因此它只適合 分享型、大文件型、變更少、文件相對而言不那麼重要、目錄層次少結構不復雜 等使用環境。我基本上,都是用來放大文件和多媒體文件。
  • Nextcloud 提供文件變化版本控制,但僅限於使用其客戶端的方式。經過 WebDav 等訪問的方式,是 沒有版本控制 的,因爲其使用數據庫來記錄全部文件,因此文件數量和結構,考驗着你的數據庫服務器。而且其 http 傳輸原理致使默認對 文件大小 有所限制。
    固然以上問題,都能經過其餘方法來解決,可是我仍然 不推薦用來做爲主要的同步服務

    可是其豐富的拓展性,以及詳盡的文件記錄,很是適合 分享多人協做,適合對外提供服務,能夠彌補 Syncthing 這類我的同步服務的短板,也就是協做和分享。

3. 結語

這 3 款開源同步服務,在同步速度上,都是能夠滿速運行的,同步速度上體驗沒多大區別。可是因爲各自服務的機制不一樣,須要必定動手能力,才能達到最佳效果。

以上只是對這 3 款開源服務的一些細節作了一些對比。若是你們有比較關心的其餘細節,再作補充。

Bye. : )

相關文章
相關標籤/搜索