開頭小故事
在近期整理房間的時候意外找到了一張失蹤已久的 microSD 記憶卡,型號是 Lexar 633x 512GB microSDXC
這張卡的規格在現在看來依舊夠用,至於品牌當然就不是最好的就是了:
UHS-I A2 U3 V30
標稱R/W速度如下:
最高寫入:70MB/s
最高讀取:100MB/s
我記得那時候入手好像是接近最低價,但發票不小心遺失也無從考證了(卡都被我忘了發票當然也掰掰了......)
且這張卡當初是買用來給 NS 電力加強版來擴容的,不過 NS 早就被我單獨出掉了有點尷尬,但鑑於最近的記憶卡大漲價,讓我覺得閒置它好像有點太過奢侈了,所以有了想要拿它來做點什麼的想法

建立自己的行動儲存方案
我第一個想到的就是弄個自己的 無線硬碟,這種產品在以前曾以 HDD 行動硬碟 + wifi 檔案分享功能流行過一陣子,起初是為了解決手機容量不足的問題而誕生,但後來因為手機容量的進步加上HDD的不可靠性問題退出了市場,雖然後續也有出了比如 WD My Passport Wireless SSD 的改良版產品(價格很可怕),但最終敵不過市場現實與雲端服務的夾擊,默默淡出了大眾視野
於是我把該卡裝在 SAMSUNG Galaxy Tab S9+ 上擴容,並且把平板端設定為 SFTP 伺服器,用剛剛說到的無線硬碟的使用思路來幫我的 S24 Ultra 緩解一些空間容量,透過可信任的局域網路(例如手機自己開熱點)就能把平時較少用的檔案先丟到平板,有需要時再拉回手機或電腦,方便我集中管理檔案,也兼顧了檔案的可攜性(出門沒帶到檔案臨時要用也麻煩)
不過真的重要的檔案我還是不建議這樣玩,還請各位注意重要資料備份喔
SFTP Server 推薦

Banana Studio 出品的 SSH/SFTP Server - Terminal
APKpure 鏡像
推薦原因:
1. 支援SAF,可以設定記憶卡為路徑位置,另外可以自己命名該資料夾的顯示名稱,這樣方便區分你進去的是本機還是記憶卡
2. 廣告目前來說不礙事,真的覺得被搞倒也可以到 Remove ads 頁面觀看廣告來免除幾天廣告,或是透過內購永久去除廣告(要買的話 38 元基本的就能去廣告了,剩下的付費檔位都是請開發者喝咖啡)
3. 免費版的功能齊全,不過他也另有付費版本(名稱改叫 SSH Server,看描述功能一樣我就不特地買來測試)
4. 穩定度還可以,目前維持運作了三天還沒有太多問題,真有問題後續我會在此更新
設置教學
以下是說明圖文,強烈建議先去設定使用者權限,再開啟server
伺服器主畫面

START/STOP:啟動/停止伺服器。成功啟動後,畫面上方會出現藍色的連線資訊(例如 sftp://<user>@192.168.x.x:2222),這串 IP 位址與 Port 號就是電腦端要輸入的目標伺服器位址Active sessions:顯示當前成功登入伺服器的裝置清單,包含登入的帳號名稱、連線時間以及來源端 IP 位址SFTP Logs:點擊可進入日誌畫面,查看伺服器與電腦端之間的底層互動指令、檔案讀寫紀錄與報錯訊息,是排解連線與傳輸問題的首要工具Users:點擊可進入帳號管理介面,新增或編輯登入帳號、密碼、SSH 金鑰以及開放存取的資料夾路徑與讀寫權限SSH port:預設的 SSH/SFTP 通訊埠為 22。但 Android 系統基於安全機制,通常不允許一般 APP 使用 1024 以下的特權埠號(除非手機已 Root,才可以使用下方的Use port 22)。因此,必須手動將數值改為 1024~65535 之間,最常見的設定為 2222。電腦端連線時也必須輸入這個對應的 Port 號Idle timeout:設定當連線後沒有任何傳輸動作達指定秒數(圖中為 600 秒 / 10 分鐘),伺服器將自動切斷該連線,以釋放系統資源並節省手機耗電Interfaces:決定伺服器要透過哪些網路介面提供服務。預設為「All」,代表監聽手機目前所有的連線(包含 Wi-Fi、行動網路、甚至是 VPN 虛擬網卡)。若考量安全性,可點入指定僅在特定的 Wi-Fi 環境下才允許連線Detect disconnect signal:建議保持開啟。這能讓 APP 即時偵測到電腦端意外斷開連線的狀況,避免無效連線持續佔用資源Keep the server running:點進去會有「Ignore battery optimization」跟「Keep server running even if screen is locked」,前者會引導你進入系統設定,需手動將該程式設為不限制電池用量(忽略電池最佳化),後者建議開啟。這能讓伺服器在背景持續運作,避免跳出 APP 畫面、手機螢幕休眠或切換到其他應用程式時,傳輸被系統強制中斷Automation & More settings:內部包含各項自動化的相關設定(例如手機開機或連上特定 Wi-Fi 時「自動啟動伺服器」等一系列自動化功能)
使用者帳號

設定完成記得按下右上打勾儲存
Name:這是在該 APP 介面裡可以看到的一個「備註標籤」。可以隨意填寫(例如標記為「我的工作筆電」或「給朋友傳檔用」)Username&Password:自訂的帳號與密碼,連線後需要用來登入並授權存取Show hidden files:開啟後,電腦端將能看到 Android 系統中以 . 開頭的隱藏檔案或資料夾(例如系統暫存檔)。一般日常傳輸照片或文件維持關閉即可Disable password authentication:開啟後,電腦端將無法透過輸入密碼來連線,強制只能使用下方的「Public keys」進行安全驗證Disable shell:此 APP 同時支援 SSH 與 SFTP。若你只單純想傳檔,開啟此選項可禁止該帳號執行系統命令列,提升安全性Public keys-Add keys:用於設定 SSH 金鑰登入。若在電腦端生成了金鑰對,可在此匯入「公鑰」,實現免密碼且防暴力破解的安全登入Access path-Add new/Add app dir:「Add new」為手動增加其他你想要開放給電腦端存取的自訂資料夾路徑。「Add app dir」可一鍵快速將此 APP 在手機內部所屬的專用資料夾路徑加入清單Alias:這是「虛擬資料夾名稱」(例如 /256G)。可以依照需求自行命名方便辨識位置Path:Android 系統內的實際物理路徑(例如 /storage/emulated/0 代表手機的內部共用儲存空間)Writable:非常重要的權限開關。勾選代表允許從電腦傳送檔案到手機,或在電腦端刪除手機檔案(完整讀寫);取消勾選則為唯讀模式,只能從手機下載檔案到電腦,適合用來保護手機資料不被誤刪
連線狀態與日誌除錯

左下角的開關滑桿:開啟/關閉 Logs,此頁面完整記錄伺服器與電腦間詳細的底層互動指令。遇到無法連線或傳輸中斷時,查看此處最為準確OK (0):紀錄最右側的綠色狀態碼,代表該行指令順利執行完畢,未發生權限不足或路徑錯誤REALPATH:電腦端正在向手機請求轉換,並確認資料夾的真實絕對路徑OPENDIR/READDIR:代表電腦端正在「打開」並「讀取」手機內的目錄內容,通常發生在剛連線或進入新資料夾時HANDLE:系統核發的控制代碼。這是針對單一檔案或資料夾建立的專屬存取通道,取得後才能進行後續的讀寫動作NAME:回傳檔案名稱與屬性清單。系統正將該資料夾內的所有檔案名稱列出,並回報給電腦端顯示CLOSE:代表該次目錄讀取或單一檔案傳輸已順利結束,系統正式關閉存取通道並釋放資源。若中途斷線,通常就不會出現此指令Auto scroll to the end:勾選後,當有大量檔案正在傳輸時,Logs 畫面會自動往下捲動,方便查看最新進度CLEAR ALL:手動清空畫面上的所有紀錄。適合在重新測試連線時點擊,藉此排除舊訊息的干擾,專心查看最新的除錯狀態(註:日誌達 8000 行時系統也會自動清理)
Client 客戶端
客戶端的部分,可以選擇自己習慣的檔案管理器,只要能支援 SFTP 就好,Android 手機端的話我自己是用 Super檔案管理器 & 資源管理器 (主要是以前ES用習慣了,這套介面我比較熟悉),WIN 電腦端我則是用 FileZilla,這邊的選擇就看各位的使用習慣了,沒有一定