資料同步工具syncthing,再所有裝置間輕鬆同步資料

資料同步工具syncthing,在所有裝置間輕鬆同步資料

這次要介紹的是一款名為syncthing的開源同步工具,在當今Google已經開始割韭菜的時代,我們需要開始尋找可以替代Google雲端硬碟的工具了,而syncthing就是個不錯的選擇,
在使用syncthing時,你可以用遠端裝置的識別碼加入要進行同步資料的其他裝置,並且指定某個資料夾來同步,
不同的資料夾也能設定要與那些裝置同步,是否開啟檔案版本控制,暫停同步等操作,
而設定的介面也特別簡單,syncthing打開後就是個命令行視窗,所有的操作都是透過瀏覽器網頁來操作,網頁也很無障礙,
如果不想每次啟動syncthing都有一個視窗,還能安裝社區提供的安裝版,安裝版就能將syncthing縮小到通知區域,且有資料同步完成時還能彈出通知告知用戶,
最後,syncthing支援多平台,包括windows、linux和mac,
ok,看完介紹後,就一起來看看syncthing的詳細操作和介紹囉!


syncthing的如何運作

syncthing跟google drive最大的不同就是syncthing不是以串流的方式,而是A裝置有什麼資料,B裝置也會有什麼資料,這些同步的資料都會占用實際的硬碟空間,
而裝置間的傳輸在預設情況下都會經過一個官方的中繼服務器,以保證資料能成功的同步,當然你也可以自己架設中繼服務器,或是取消這個功能,
傳輸的速度則取決於每個要同步裝置的網路頻寬大小,根據我自己的測試,無論是與大陸的用戶,或是與台灣的用戶同步資料,都能達到滿速的驚人成績。
至於何時同步,則可以由用戶自己選擇,使用免安裝版的話,只要將命令行事窗關閉就不會在與其他裝置進行同步,
使用安裝版如果想暫停同步,也可以由網頁的控制頁面來暫停,即時的網路傳輸速度、以及同步的進度也能在網頁控制頁面看到,十分方便。


下載和官網

官方下載

小羔羊服務器下載

官方頁面

  1. syncthing官方下載頁面
  2. syncthing官方github頁面
  3. 安裝版的下載頁面

windows操作指引

  1. 如果你是使用安裝版,那可以跳過這一步,
    如果你是綠色版,解壓
    syncthing-windows-amd64-vxxx
    打開解壓好的資料夾,再打開這個執行檔
    syncthing.exe
    之後你會看到一個命令行視窗,不要將視窗關閉
  2. 打開瀏覽器,在網址列輸入
    127.0.0.1
    按enter
  3. 接下來你就能看到syncthing的控制頁面,下面就來說說每個部分我們能做的事

找到自己裝置的識別碼

你可以先找到目前裝置的識別碼,將這個識別碼傳送給朋友或其他裝置上來新增裝置,在此假設目前操作的是A電腦。

  1. 在網頁上用上、下或tab找到
    操作 折疊連結
    按enter
  2. 在往下或tab找
     顯示識別碼到訪過連結
    按enter
  3. 之後就必須用瀏覽模式了,nvda+空格切到瀏覽模式,上、下找
    標題第 4 級裝置識別 - xxx(你的電腦名稱)
    xxxxx(這裡就是識別碼)
    識別碼通常是一串英文加數字的亂碼,將這串整行複製起來,
    複製好後按ESC關閉這個畫面

新增遠端裝置

當你有了一串識別碼,你就能在另一台裝置上利用這個識別碼將兩個裝置連結起來,就像加好友一樣,
在此假設我們操作的是B電腦。

  1. 在控制頁面按tab,或按上、下找到
     新增遠端裝置按鈕
    按enter
  2. tab找
    裝置識別碼下拉式方塊必要的無效的輸入有自動完成可編輯空行
    在這裡貼上朋友、或你其他裝置的識別碼,之後tab會看到
    裝置名稱編輯區有自動完成空行
    在這輸入你覺得好認的名稱,例如我的B電腦之類的
  3. 最後tab找儲存enter,就完成了新增裝置的動作,
    之後你在控制頁面按h在標題間跳轉時,你就能看到類似下面這樣的內容→
    遠端裝置標題第 3 級
    最新ubuntu標題第 4 級按鈕折疊
    斷線兔子標題第 4 級按鈕折疊
    可以清楚的查看其他裝置的狀態,
    要特別注意的是,A電腦會在控制頁面上多出通知,你需要在A電腦按tab或上、下來找到
    新增 按鈕
    按enter才能成功將兩個裝置連結起來

新增要共用的資料夾

  1. 在控制頁面上按tab,找到
     添加資料夾按鈕
    按enter
  2. tab找
    • 資料夾標籤編輯區
      在這寫個名稱,這個名稱只會用來在控制頁面上顯示
    • 資料夾識別碼編輯區唯讀必要的xxxxx
      通常會自動填好,但要特別注意,要成功的同步資料,所有裝置的這個識別碼必須相同,關於資料識別碼的特殊狀況會在文末說明
    • 資料夾路徑下拉式方塊必要的有自動完成可編輯
      在這裡輸入要進行同步資料的資料夾絕對路徑,如果不會打的話,只要先在檔案總管找到資料夾,按快顯鍵找內容打開,複製資料夾位置即可,像這樣→
      H:\文章和筆記\筆記
      輸入進去後會像這樣→
      資料夾路徑下拉式方塊必要的有自動完成可編輯已選取 H:\文章和筆記\筆記
  3. 最後tab找儲存enter,就完成設定了,在控制頁面按h跳標題看起來會像這樣→
    資料夾標題第 3 級
    未同步 共用資料夾標題第 4 級按鈕折疊

將設定好的資料夾共用給遠端裝置

每個你所設定的資料夾都能控制要共用給那些裝置,讓資料的同步變得更靈活,這裡假設我們操作的是A電腦。

  1. 在控制頁面tab找剛設定好的資料夾,例如我的是
    最新共用資料夾標題第 4 級按鈕折疊
    在這裡按enter
  2. 之後tab找編輯按enter
  3. tab或往下找
    正在共享
    按enter
  4. tab或往下找像這樣的核取方塊
    核取方塊沒勾選
    兔子
    核取方塊沒勾選
    ubuntu
    在核取方塊下的是裝置名稱,要選擇某裝置就按空格勾選名稱上的核取方塊
  5. 之後tab找儲存按enter完成設定,B電腦一樣需要在控制頁面點選
    新增 按鈕
    之後才會正式掃瞄並做資料同步
  6. 在控制頁面按h看起來會像這樣→
    資料夾標題第 3 級
    最新共用資料夾標題第 4 級按鈕摺疊

linux操作指引

一般我們操作linux的電腦都是透過ssh遠端連線來操作,所以之後你也需要打開linux上防火牆相應的port,
如果你是家中自架的主機,還需要設定port轉發,在內網連線的話則不用
租用的主機只需要注意linux防火牆的設定以及syncthing的設定即可,下面我是以Ubuntu 64 位來寫的步驟。

  1. 如果以root帳戶啟動syncthing,它會有報錯訊息,一直推薦你用一般帳戶來啟動syncthing,所以你需要在linux中新增一個普通帳戶,
    新增帳戶有兩種方法,下面以新增(lamb)這個帳戶為例→
    • 第一種方法(較為簡單,按照提示即可新增完成)
      sudo adduser lamb
    • 第二種方法(需要手動輸入每一個動作的指令)
      新增帳戶
      sudo useradd lamb
      設定密碼
      sudo passwd lamb
      強制建立帳戶的目錄(如果沒有帳戶目錄,登入後會無法操作,當你登入後發現無法操作在使用root帳戶輸入此指令)
      sudo useradd -m lamb
  2. 接著為了保證在使用一般帳戶登入後可以使用sudo來執行檔案,需要到這個路徑修改sudoers檔案→
    /etc/sudoers
    找到這行
    root ALL=(ALL:ALL) ALL
    一樣以(lamb)這個帳戶明為例,複製上面這行,把root替換成帳戶明再開一行,修改後會像這樣→
root	ALL=(ALL:ALL) ALL
lamb	ALL=(ALL:ALL) ALL

修改好後保存檔案,就能用這個帳戶登入linux並使用sudo指令了

  1. 下載syncthing的linux版本,之後我是在pc端解壓,之後將資料夾內的
    syncthing
    傳輸到linux主機上
  2. 將這個執行檔放到以下路徑
    /usr/local/bin/
  3. cd到這個路徑
    cd /usr/local/bin/
  4. 輸入指令
    syncthing
    此時會開始初始化,產生.xml檔案
  5. 初始化完成後關閉,按
    ctrl+c
  6. 之後要修改xml,輸入指令
    sudo nano ~/.config/syncthing/config.xml
  7. 找到
<address>127.0.0.1:xxxx</address>
改為
0.0.0.0:8080

改完會像這樣
<address>0.0.0.0:8080</address>

  1. ctrl+o儲存,之後ctrl+x退出文字編輯器
  2. 之後在執行指令,輸入
    syncthing
    此時syncthing就能接受從外部的網路連接
  3. 之後透過瀏覽器訪問
    ip:8080
    如果是從內網連線,就輸入像這樣
    192.168.x.x:8080
    就能連線到linux的控制頁面了,不知道自己linux的內網ip或外網ip可以善用瀏覽器的搜尋查詢相關資料,
    如果要讓syncthing隨著系統開機自動啟動,而不是每次都要手動啟動,可以到網路搜尋如何將軟體設定為開機自動啟動

注意事項

為什麼我的同步資料夾裡有.tmp的檔案,還佔用了硬碟空間?

在syncthing尚未同步完成、中斷傳輸時,你可能會看到.tmp的檔案,
在下次同步開始時,如果檔案還在就會繼續同步,如果檔案被刪除,.tmp的檔案會在24小時候自動被syncthing清除,
在linux上,24小時的規則也可以透過修改.xml檔案修改成自己喜歡的時間,windows端因為可以直接看到.tmp檔案,所以可以手動清除。

兩個裝置的資料夾同步總是有錯誤提示

如果A和B裝置同步,而A刪除了與B同步的資料夾,但因為B的資料夾沒有被刪除,導致A又看到B給A發同步邀請,
此時如果A裝置又重新新增了此資料夾,就有可能產生錯誤,
根據我的觀察,是因為A裝置在重新新增資料夾後,產生的識別碼與B裝置的資料夾識別碼不同,因此兩端明明都能看到這個資料夾,但卻一直產生錯誤訊息,
解決的方式是兩邊都要從控制頁面刪除這個資料夾,由一方新增資料夾,重新添加另一方為共用的裝置,就能解決這個問題。


補充

學會了基本的操作和設定後,你也可以到控制頁面的操作選單內找到設定,在設定裡你可以找到關閉中繼服務器的勾選框,
你也可以在設定頁面中限制上下傳的頻寬,連接簿等等,也可以設定一組帳號密碼,
要特別注意的是,如果你的syncthing是以外網連接,強烈建議必須設定一組帳號密碼,以策安全,不然任何人只要知道你的ip跟port就能看到你的控制畫面,傳輸資料到你的電腦,
因此在一般情況下,建議不要開放外網可以連線到你的syncthing連接簿比較安全,
這次的分享就告一段落了,有問題可以在nvda台灣討論區發問喔。