瀏覽遠端目錄、傳檔案、就地改一行設定:不用離開 Term,也不用再連一次。
撰寫於
Term 內建一個 SFTP 檔案瀏覽器。它不是另一個應用,也不是另一條連線:它作為一個分頁開在你已經連上的那台主機旁邊。
手機上在主機清單裡長按一台主機,選「開啟 SFTP」;PC 與平板上右鍵主機,選單裡是同一項。開啟之後底部分頁列會多出一個 SFTP 分頁,和終端分頁並排,點分頁就在檔案和 shell 之間來回切,兩邊都不用重來一次。
開啟後落在登入使用者的主目錄。頂部是路徑麵包屑,點其中任何一段直接跳回那一層;清單裡資料夾排在檔案前面,每一列給出權限和修改時間,檔案再加上大小和依副檔名認出來的圖示。第一列的 .. 回上一層。
右上角三個按鈕分別是篩選、上傳和選單。選單裡可以依名稱、大小、修改時間排序,開關顯示隱藏檔案,以及在清單與網格檢視之間切換。手機上下拉即可重新整理。
/ › home › tester 下面就是這台主機的主目錄,資料夾排在最前,右側是修改時間。右上角依序是篩選、上傳、選單。
.yaml 和 .json 各是各的。右上角的上傳按鈕開啟系統檔案選擇器,選中的檔案串流寫進目前這個遠端目錄;PC 上也可以直接把檔案拖進視窗。傳輸過程都在「傳輸」面板裡,一個檔案一列進度,可以單獨取消。
上傳失敗不會傷到已經在那裡的檔案。傳到一半斷線、被取消,或者乾脆失敗了,伺服器上那個檔案要麼是完整的新檔案,要麼是原封不動的舊檔案:不會出現一個頂著正確名字的半截檔案。
檔名按原樣保留,中文和其他非 ASCII 字元都不例外。
回归测试文件.bin 原樣落在伺服器上。「清除已完成」只收走完成的列,正在傳的不受影響。點一個檔案,或者從它的列選單裡選下載,檔案就存進 Term 自己的下載區。下好之後這一列還能預覽(交給系統的預覽能力)、分享給別的應用,或者儲存到裝置的公開目錄裡。
開始傳之前先算兩筆帳。單一檔案超過「設定 → 終端 → SFTP 最大下載大小」就當場拒絕:這一項可選 64 MB、256 MB、1 GB(預設)、4 GB,也可以設成無限制。整批檔案的總和還要放得進 Term 在這台裝置上剩下的空間。哪一項不滿足,都會在開始之前就告訴你,而不是傳到一半才發現沒地方寫。
128 KB 以內的檔案,列選單裡會多出一項「編輯」:在內建編輯器裡開啟,改完直接存回伺服器。改一行 nginx 設定、翻一下 .env、給 crontab 添一條,不用先下載再上傳。
儲存時會先看一眼伺服器上那份有沒有在你開啟之後被人改過。改過就不會默默覆蓋,而是先問一句,「伺服器上的檔案已變更」,覆蓋還是放棄由你決定。
列選單裡的「重新命名」原地改名,檔案不會重新傳一遍,多大的檔案都是一瞬間的事。同一個選單裡還有「詳情」,給出完整路徑、大小、權限和時間。
右上角選單裡的「新增資料夾」在目前目錄下建一個,建好立刻出現在清單裡。目錄是空的也會照實說「此資料夾為空」,而不是留一片空白讓人猜是不是還沒載入。
「刪除」會先確認:「從伺服器刪除「…」?此操作無法復原。」這是伺服器上的刪除,沒有回收筒可以撈回來,所以這一步不省。
SFTP 分頁不會另開一條連線:它走的就是這台主機已經建立的那條 SSH 連線。所以開啟它不用再驗證一次,伺服器上也不會多出一個登入工作階段;如果這台主機是透過跳板機連的,檔案傳輸同樣走那條隧道。
代價是它和終端同生共死。連線斷了,檔案清單也就失去依據,這時候瀏覽器不會裝作還在,而是直接給出「已中斷」和一個重新連線按鈕:點一下重新連上,回到剛才那個目錄。