手機照片自動備份到電腦 (使用 Syncthing for Android)
文章目錄
需求
現在的手機都不能插卡, 照片直接存在手機上, 萬一手機掛的很嚴重, 有時連照片都救不回來. 但是要常常拿手機接線到電腦上傳檔也很麻煩, 因此要找一個自動把手機照片備份到電腦的方式. 大概有幾種作法
- 最簡單的, 花錢買 Google Drive 或 Google Photos, 只要有上網, 就會自動幫你備份到雲端去.
- Resilio Sync, 他是走BitTorrent協定的傳輸軟體, 免費版和付費版的差異可以看這裡, 不過這軟體我沒有實際使用過.
- Syncthing, 這是一個 Open Source 的檔案同步軟體.
因為我的需求是要把照片先轉存到電腦, 整理後再上雲端, 因此我用的是 Syncthing, 他可以把各種平台, 譬如 Windows, Linux, Android, maxOS, *BSD, ... 的檔案做互相同步. 甚至連 Synology 都有人做好 Addon了. 沒錯, 你注意到了, 他沒有官方支援的 iOS solution ... (iOS 可參考 Möbius Sync, 這是別的廠商做的付費 App, 支援 iPhone/iPad)
手機端安裝
Syncthing 在手機上有兩個 App, 一個是 syncthing-android, 另一個是 Syncthing-Fork. Syncthing-Fork 有多一些功能, 可參考他的 GitHub, 上面有說明, 所以我就用這個了.
下載點:
-
安裝好後, Syncthing-Fork 需要 3 種權限, 我把截圖直接合併成一張
- 儲存空間權限: 這個權限要開, 這樣才能讀/寫手機上的檔案
- 電池最佳化: 這個的目的是要取得在背景執行的權限, 如果沒有要他自動執行同步, 都要手動的話, 可以不開這個權限
- 位置權限: 這個的目的是, 讓程式可以指定在連接上某些 WiFi 的時候才同步, 如果沒有這個需求, 可以不開這個權限.
-
如果之後要調整, 可以到 應用程式權限 裡面調整
-
電池的部分, 可以在 電池效能最佳化 修改, 但如果關掉了, 下次執行 App 的時候, 他又會重新要求權限, 這個作者看來不考慮修改, 可參考這裡: https://github.com/Catfriend1/syncthing-android/issues/419
-
手機 App 安裝好後, 先回來裝電腦的部分, 等下再來設定 App.
電腦端安裝
- 從這裡 (https://syncthing.net/downloads/) 下載你適合的版本, 如果你是 Windows, 就執行 syncthing.exe
- 用 browser 打開 http://127.0.0.1:1183/
- 執行 操作 -> 顯示識別碼, 讓 QR Code 顯示在畫面上
- 先停在這裡, 然後切換到手機部分, 以便設定連線和選擇要同步的目錄
手機上新增要同步的遠端電腦和檔案
-
App 一進去, 一開始會顯示要同步的資料夾, 預設是只有相片的部分
-
再來選擇 裝置 的部分, 一開始都是空的
-
按右上角的新增裝置, 然後掃描電腦上的 QR Code, 並設定好這台裝置的名稱. 要注意的是, 這裡要選擇需要同步的資料夾, 譬如下圖中有選取 Android 相機. 如果要同步其他資料夾, 可以再自行新增.
-
新增完成後, 就可以看到這台裝置了, 因為電腦端還沒接收, 所以一開始會是 Disconnected.
-
最後是要確定 Syncthing 有啟動, 可以直接看上面 Syncthing-Fork 右邊的圈圈顏色, 若是綠色, 就是啟動了. 若是黃色或橘色, 則可以到 STATUS 頁面將它重新啟動.
-
接下來回到 PC 做設定.
在 PC 端上設定接受手機的連線
-
在手機新增裝置後, 電腦端會出現這個畫面, 要確認是否同意新增
-
同意(選擇新增)之後, 可以給這個新增的裝置(手機)取個名字
-
再來他會訊問是否新增資料夾
-
同意(選擇新增)之後, 可以給這個新增的資料夾取個名字
-
若某些檔案不要同步, 譬如我的手機上面被刪除的檔案, 檔名都會被改成 .trashed 開頭, 這些檔案應該不需要同步到電腦. 可在 忽略樣式 的地方輸入一行 .trashed*, 這樣在同步的時候就會忽略這些檔案.
設定好之後, 就會開始同步了
-
手機上的畫面如下, 可以看到進度和容量
-
電腦上的畫面如下, 一樣也可以看到進度和容量
注意
-
手機建議要設定特定 Wi-Fi 才啟動同步
手機會在外面連線 Wi-Fi, 如果外面的 Wi-Fi 沒有提供很大頻寬, 還要給 Syncthing 使用, 很可能就爆了. 因此建議要指定要連上特定 Wi-Fi 才去同步特定裝置, 譬如連上家裡的 Wi-Fi 才去同步家裡的 Syncthing.
- 設定 -> 執行條件 -> Run on specified Wi-Fi networks: 這裡可以多選
- 裝置 -> 選擇你要指定的裝置 -> 自訂同步條件 -> Specify sync conditions -> Run on specified Wi-Fi networks: 這裡一樣可以多選
-
無法關閉電池最佳化, 導致耗電問題
裝了 Syncthing-Fork 之後, 超級耗電. 第一個反應是, 那就啟用 電池最佳化, 結果呢, 下次使用 Syncthing-Fork 時, 他又顯示需要這個權限. 不給權限, 就無法使用.
- GitHub 上的討論
參考這個 issue: https://github.com/Catfriend1/syncthing-android/issues/419 有人提出需求, 希望能夠 Allow app usage without Battery optimisation, 但被拒絕了. 作者的回覆是 Just because you give the permission does not mean we use it everytime. So basically no we won't make it optional to avoid database corruption in case Android can't communicate with the SyncthingNative before putting the app and native in suspend.
然後作者寫了篇 Wiki 來說明, 結論就是不行: https://github.com/Catfriend1/syncthing-android/wiki/Info-on-battery-optimization-and-settings-affecting-battery-usage
結論
優點: 設定好之後還滿方便的 缺點: 兩邊都要開電腦
Posts in this Series
- Asuswrt-Merlin Syncthing (檔案同步)
- 在 Synology DSM 上面跑 Syncthing (檔案同步)
- 手機照片自動備份到電腦 (使用 Syncthing for Android)