在 Linux 上掛載 FTP 伺服器 — NetDrive 設定指南

閱讀時間 6 分鐘 provider-guide ftp linux
Alex
AlexPrincipal Engineer
使用 NetDrive 的實驗性 Linux 版本,在 Ubuntu 上將 FTP 伺服器掛載為一般掛載點,從 GitHub 安裝到被動模式疑難排解一次說明。

某個 Ubuntu 建置伺服器需要從一台歷史悠久的傳統 FTP 主機拉取資源,這台主機的存在早於你的團隊如今會選擇的任何方案,而把部署腳本重寫成使用 curllftp 並不值得花一個下午。NetDrive 的 Linux 版本可以把同一台 FTP 伺服器掛載到一個普通的掛載點,讓 /mnt/legacy-ftp/cpls,或是單純呼叫 open() 的 Python 腳本來說,表現得就像任何其他目錄一樣。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

在 Ubuntu 上掛載 FTP 伺服器

NetDrive 讓 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 與 macOS 上顯示為原生磁碟機 — 不需同步,也不需完整下載。

  • 支援 Ubuntu 16.04 及以上版本
  • 支援帳密登入與匿名 FTP
  • 透過一般掛載點讀寫 — 無需盯著客戶端視窗
WindowsmacOS
下載 Linux 版 NetDrive →

免費試用。提供終身與訂閱方案。

為什麼要掛載,而不是寫腳本繞著 FTP 跑

單純的 FTP 客戶端應付一次性下載沒問題,但它無法給腳本或建置工具一個可以直接指向的一般檔案路徑。每次讀取都得先開啟客戶端、找到檔案,再手動把它拉下來。透過 NetDrive 掛載伺服器就省去這一步:掛載點會直接對應到 FTP 伺服器,所以 cat /mnt/legacy-ftp/release-notes.txt 讀到的是即時檔案,而不是上週某人記得下載的副本。

NetDrive 從第一個 3.x 版本開始就支援 FTP,而可選帳密的連線方式 — 適用於內部鏡像站或發布共享等允許匿名存取的伺服器 — 自 3.7.687 版起就已支援。在 Linux 上,這代表的是與 Windows 和 macOS 上相同的連線類型,只是透過 NetDrive 的 Ubuntu 版本執行。

NetDrive 將雲端儲存帳戶掛載為本機磁碟機 — 與 Linux 版本在掛載點提供的核心互動相同

在 Ubuntu 上安裝 NetDrive

Linux 版 NetDrive 並未收錄在 Ubuntu 的預設套件庫中,因此安裝流程是透過 GitHub,而非 apt

  1. 前往 github.com/NetDrive/installer,下載符合你 Ubuntu 版本的發行版。
  2. 依照該儲存庫針對你版本的發行說明操作 — NetDrive 能掛載任何東西之前,需要先安裝一個驅動元件。
  3. 安裝 NetDrive 套件。
  4. 啟動 NetDrive。首次執行會載入驅動元件,視系統的權限設定,可能會要求 sudo

最低支援版本為 Ubuntu 16.04,而且 Linux 版與 NetDrive 自家比較頁面上所標示的一樣,仍屬於實驗性功能 — Windows 和 macOS 得到的測試量最大,因此在讓無人值守的自動化流程依賴這個掛載點長期運作之前,請先針對你的發行版與工作負載進行驗證。

逐步操作:在 Ubuntu 上連線 FTP 伺服器

  1. 開啟 NetDrive 的 Drive Manager,點選 + Add Drive
  2. 從連線類型清單中 選擇 FTP

代表 NetDrive 中 FTP 伺服器連線的 FTP 提供者標誌

  1. 輸入伺服器位址 — 主機名稱或 IP — 以及 port。FTP 預設使用 21,部分主機則改用非標準連接埠。
  2. 輸入認證資訊,若伺服器允許匿名 FTP,則使用者名稱與密碼欄位留空即可。
  3. 設定掛載點 — 例如 /mnt/legacy-ftp 這類路徑,或任何你有寫入權限的空目錄。
  4. 點選 Connect。 NetDrive 會完成驗證,並將伺服器掛載到該路徑。

在依賴掛載點之前先驗證它

請從終端機檢查掛載狀態,而不是只信任圖形介面 — 這在實驗性版本上是個合理的習慣,也值得在腳本假設路徑存在之前先做:

# Confirm the mount is listed
mount | grep legacy-ftp

# Or just try listing it
ls /mnt/legacy-ftp

如果連線始終沒有完成,先檢查可連通性 — 主機名稱錯誤或連接埠被封鎖,是位於防火牆後方的 Linux 主機上最常見的 FTP 連線失敗原因:

# Basic reachability
ping ftp.example.com

# Is the FTP control port actually open?
nc -zv ftp.example.com 21

顯示 IP 可連通性的網路連線檢查

FTP 控制連接埠的可連通性檢查

這套設定常見的坑

  • 目錄列表卡住:位於 NAT 或家用路由器後方的多數 FTP 伺服器,資料連線需要被動模式(PASV) — 在主動模式下,伺服器會嘗試回連你的機器,而這通常會被防火牆擋下。請查閱你伺服器的文件,啟用被動模式並開放被動模式的連接埠範圍。
  • 大型目錄列表速度慢:如果伺服器支援 MLSD 指令(現代 FTP 列表方式)而非較舊的 LIST 格式,含有數千個檔案的資料夾列表速度會更快。
  • 沒有套件管理器整合:更新來自 GitHub 發行版,而非 apt upgrade — 值得在管理這台機器的運維手冊裡記上一筆,因為檢查新版本在這裡是個手動步驟。

小結

在 Ubuntu 上掛載 FTP,能取得與 NetDrive 在 Windows 和 macOS 上相同、以磁碟機形式呈現的存取方式,只是安裝程式放在 GitHub 上,而非套件庫。如果同一台伺服器也支援 SFTP,對於任何會跨越公開網際網路的用途來說,那是更好的選擇 — 參見在 Linux 上掛載 SFTP 伺服器 — NetDrive 設定指南。若想了解在 Ubuntu 上執行 NetDrive 的完整概況,請參見在 Ubuntu Linux 上使用 NetDrive

— Alex, NetDrive