:::

我是如何在Linux桌面端同步Google Drive的檔案 / How Do I Sync Google Drive Files on the Linux Desktop

2023-0423-115405.png

Nextcloud Client + Nextcloud + rclone + Google Drive。這套組合真是複雜。


檔案同步架構 / File sync structure

.pptx-cropped.png

(圖示來自於:Flaticon)

上次有講到我用Nextcloud掛載Google Drive,這樣可以讓我的Linux桌面版可以將檔案跟Google Drive進行同步。我們再用上圖來說明一下整個架構。

上圖中左邊的電腦就是我現在使用的Linux桌面端。Linux是透過Nextcloud Desktop Client跟Nextcloud伺服器進行連接。中間的伺服器是安裝了Nextcloud的電腦。Nextcloud伺服器安裝了rclone,透過rclone以掛載的方式連上Google Drive。而Nextcloud再使用External Storage功能讓使用者能夠存取掛載的資料夾。

為什麼還需要Nextcloud? / Why do I need Nextcloud?

https://rclone.org/drive/

https://rclone.org/drive/

「既然都有rclone了,為什麼還要用Nextcloud?」我想這應該是很多人的問題,但有這個問題的人,應該也都只是將rclone裝在擁有穩定網路連線的伺服器上,不像我這樣裝在筆電的Linux上。

rclone的確是很好用的網路檔案儲存空間掛載工具,但它使用時必須要有網路連線。然而,當我帶著筆電東奔西跑的時候,大多情況下我都不能預設它會有網際網路連線。如果一開始就沒有辦法連線到目標要掛載的伺服器,rclone多半會直接關閉。原本應該要有檔案的地方,就會因為沒有掛載成功而一片空白。如果你的系統會仰賴這些檔案,那就更不妙了,可能會導致系統出現問題。

相較之下,Nextcloud用rclone連上Google Drive這種同步架構是一個很好的緩衝區。它允許我將檔案儲存在本機端,這可以確保我在編輯與儲存檔案時不會受限於網路速度。此外,它可以等電腦擁有穩定的網路連線時再來同步。對於不需要急著修改的檔案來說,就讓它放著即可。

缺點 / Limitation

但Nextcloud用rclone連上Google Drive這套方案的缺點在於反向同步並不即時。這是因為Nextcloud不會即時偵測Google Drive有沒有修改。如果在Google Drive修改了檔案,Nextcloud自己並不會發現檔案被修改,自然也不會去更新本機的檔案。

要解決這個問題有兩種做法:

  1. 在Nextcloud伺服器的網頁上開啟該檔案。此時Nextcloud會嘗試取得檔案的資訊,便能讓它察覺到檔案有所更新,進而更新本機端的檔案。
  2. 執行檢查更新掃描的指令:「occ files:scan」。我現在是設定cron讓它定時執行,但大家推薦的做法是搭配inotifywait來更新。目前rclone好像沒有類似的功能可以使用。

反向同步不能即時,這大概是目前這套架構最大的缺點吧。

https://github.com/owncloud/client/issues/3935

https://github.com/owncloud/client/issues/3935 

除此之外,檔案頻繁寫入、儲存的時候,Nextcloud也很容易報錯。我想,解決方式應該是叫Nextcloud Client同步不要這麼即時吧。不過目前看來Nextcloud Client並沒有想要做這方面的功能就是了。


最後的問題是:你用過網路硬碟掛載工具嗎?你都用那個工具呢?

歡迎在下面留言喔!

總共5 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. 這樣看來在nextcloud有一份完整的google drive副本,那怎不用rclone的copy或sync功能呢?

    回覆刪除
    回覆
    1. 您好,

      rclone要求設備必須穩定聯網,大多操作都會有網路連線確認,而這會造成系統操作的卡頓。舉例來說,按Ctrl + S的時候,rclone會因為需要確認網路狀態而會讓你的軟體暫時卡住,直到真的確認完成為止。
      這個配置的用意是,我的主要電腦上會有一份離線的備份,讓我在網路不穩的環境下依然可以操作檔案,而且不會因為網路速度而拖慢。當有穩定的網路連線時,NextCloud才會緩慢地把離線檔案同步到Google Drive上。

      很多人用rclone,不過大家碰Linux基本上都是在伺服器上,不是在自己時常操作的電腦上。
      當網頁上點個按鈕要等伺服器1秒鐘才回應,你也許不會覺得哪裡奇怪。
      但你的電腦上按Ctrl + S儲存的時候,它會完全卡住1秒鐘,這時候通常會難以忍受。

      這就是為什麼我要用這個配置的原因。

      ----

      另一個原因是,NextCloud同步到掛載了Google Drive的rclone的xlsx檔案時,Google Drive可以用網頁的試算表開啟xlsx檔案。但你直接上傳xlsx,Google Drive會把它當成普通的檔案顯示。真的是很奇怪,我到現在還是不知道為什麼。

      刪除
  2. 感謝分享,
    後來還是安裝了grive2.
    https://yourcmc.ru/wiki/Grive2
    先用用看

    回覆刪除
    回覆
    1. 您好,

      原來還有Grive2,長知識了!
      如果您覺得好用的話,不妨再回來推薦一下喔。

      刪除
    2. 我看了Grive2的使用說明。它似乎需要手動同步。似乎跟我們需要的有點不一樣?

      刪除