手動打造Google Drive同步工具:ownCloud與rclone的組合 / Build a File Sync Tool for Google Drive: ownCloud + rclone
結果還是得要自己來動手。
Linux缺少同步工具 / No file sync tool in Linux
這樣講有點言過其實了。不過很多情況下,這句話還是算說的通。
Google雲端硬碟的電腦版本身只有提供Windows跟Mac兩種版本,並沒有Linux版本。OneDrive也是類似的狀況,有Windows版(PC)、Mac版,但就是沒有Linux版。這年頭Linux桌面版的地位還不如Android跟iOS這種行動裝置,實在是令人覺得很無奈。
當然,Linux有很多遠端硬碟掛載工具可以使用。這包括了相當知名的rclone。rclone支援相當多雲端硬碟,包括了Google Drive跟OneDrive,掛載之後,你電腦中的資料夾就幾乎等同於雲端硬碟的狀態,非常好用。
有興趣想要瞭解rclone怎麼使用的話,可以參考「Rclone:玩轉Google Drive & One Drive」這篇教學。
然而,rclone再厲害,它終究是一個掛載工具。如果電腦一直都能連上網際網路,網路速度也夠快的時候,操作起來問題不大。不過當網路速度不太穩,甚至有需要離線使用檔案的時候,rclone就不是一個很好的方案了。
自建雲端硬碟 / Self-build cloud disk
要說的話,Linux還是有文件同步工具啦。除了付費的Dropbox,需要跟NAS綁定的Qsync Client之外,我們還有自行架設雲端硬碟的ownCloud跟Nextcloud兩種選擇。
由於兩家本是同根生,ownCloud跟Nextcloud兩家都有掛載Google Drive的能力。不過Nextcloud是透過第三方APP安裝的外掛,看起來已經不太可用。ownCloud跟Google Drive的整合是內建的功能,但我一直沒辦法順利完成設定步驟,最後只好作罷。
如果系統不能直接掛載Google Drive的話,那我們是不是能夠換個角度,結合rclone來一起使用呢?我個別嘗試將Nextcloud或ownCloud跟rlcone的組合,最後發現只有ownCloud跟rclone的組合能夠順利運作。以下我們就用ownCloud跟rclone的組合進行說明。
ownCloud跟rclone的整合 / Integrate ownCloud with rclone
要做到這件事情並不容易,有許多步驟需要完成。讓我們一個一個來看怎麼操作。
rclone掛載Google Drive / Mount Google Drive via rclone
https://rclone.org/remote_setup/
首先最基本的條件是要把Google Drive掛載起來。由於我的ownCloud是以Docker的形式運作在NAS上,它是沒有桌面環境的伺服器,所以用rclone掛載的時候,需要以Remote Setup的形式設置。
Remote Setup大致上的做法如下:
- 你要有一臺可以運作rclone且有瀏覽器的桌面端電腦,而且確保版本更新到最新。
- 在新增remote config的時候,到「Use web browser to automatically authenticate rclone with remote?」的設定時,選擇「No」 (Say N if running rclone on a (remote) machine without web browser access)。如果沒有出現這個設定,表示你的rclone版本並不符合。
- 接下來伺服器會顯示一段指令,例如「rclone authorize "amazon cloud drive"」。
- 在你可以運作瀏覽器的桌面端電腦上執行該指令,此時rclone會開啟瀏覽器,並請你登入帳號、確認授權。
- 你的桌面端電腦會出現一串TOKEN亂碼。複製該亂碼。
- 回到伺服器上,將該亂碼貼上,接著便能設定完成。
儘管看起來有點複雜,做過一次後就會覺得也沒有很難了。
設定好rclone後,我們還要用指令來掛載Google Drive。如果你的Google Drive設定的名稱為「gdrive」,你想要掛載這之中的「sync」資料夾,要掛載的路徑為「/gdrive-sync」,那rclone掛載的指令如下:
rclone mount --allow-other --daemon gdrive:sync /gdrive-sync
請將該指令寫入開啟會自動啟動的腳本,確保每次開機時便能自動掛載,這樣rclone的部分就完成了。
ownCloud開啟本機資料夾掛載 / Enable "Local" external storage in ownCloud
ownCloud的external storage預設並沒有開啟Local本機資料夾的掛載,這是因為ownCloud認為此舉容易造成資安問題。不過我們還是可以透過教學把它手動打開。
這個設定要修改ownCloud的設定檔,步驟如下:
- 找到ownCloud設定檔位置,例如:「/var/www/owncloud/config/config.php」。
- 在設定檔的陣列中加入以下設定:
'files_external_allow_create_new_local' => 'true',
重新整理網頁,External Storage便可以設定Local了。
加入掃描排程 / Schedule Scan
ownCloud在處理Google Drive這種外部掛網的檔案時,一般時候是不會去判斷它有沒有修改。這會導致你在Google Drive修改了檔案,但你同步電腦上的檔案卻一直不會同步。
你需要用以下指令來強制ownCloud進行檢查:
sudo -u www-data php /var/www/owncloud/occ files:scan --all
然後記得將這段指令放到crontab中。我是設定每小時檢查一次,時間間隔長短就請大家自行斟酌。
設定同步工具 / Sync Tool
https://owncloud.com/desktop-app/
最後就簡單了,在桌面端安裝ownCloud的同步軟體。Linux版本它提供了AppImage,算是蠻友善的可攜式格式。
安裝後開啟時,ownCloud會要你登入伺服器,並輸入帳號與密碼。此時要特別注意資料夾路徑(Local Folder)的選項,只有這時候才能決定要把ownCloud的檔案同步在那個資料夾。此處一旦設置好之後就不能修改了,除非移除同步再重新設定。
結語 / In closing
到這邊為止,ownCloud跟rclone的組合,讓我總算可以跟Google Drive的檔案進行同步處理。跟rclone的直接掛載並不同,直接掛載的檔案會在每次儲存與讀取的時候卡頓,久而久之就讓人覺得非常惱火。透過ownCloud檔案同步作為中介,它只有在我沒有要修改檔案的時候才會在背後上傳或下載,這樣講又比較不會妨礙本機上的檔案操作。
我在ownCloud的架設用的是QNAP的Container Station的Docker版本。我本來是想要架設成LXD容器的,但架設過程非常不順。因為ownCloud需要的PHP版本是7.4,但現在Ubuntu都已經是PHP 8了,安裝過程時常混在一起。最後我就放棄使用Docker。
最後在說說為什麼不是用Nextcloud。一開始其實我用Nextcloud順利運作了好幾天,直到我發現Nextcloud的檔案掃描根本就沒有反應的這個問題。換句話說,我在Google Drive上修改檔案時,Nextcloud並不會偵測到Google Drive的檔案有所變動,並把它同步到我的本機端。儘管Nextcloud說他們有這個功能,但實測下來就是沒有用。
ownCloud用到現在,我覺得它的反應速度並沒有Nextcloud這麼快,總是會有慢很多拍的感覺。不過既然是使用文件同步工具了,我也就不強求一定要這麼即時同步了啦。能順利把檔案同步下來,或是同步上去,我就已經滿足了。
你現在都用什麼文件同步工具呢?
歡迎在下方分享你的看法喔。
感謝分享...新手的感謝
回覆刪除不客氣~
刪除