簡介

OSS FTP工具是一個特殊FTP server, 它接收普通FTP請求後,將對檔案、檔案夾的操作映射為對OSS的操作,從而使得您可以基於FTP協議來管理儲存在OSS上的檔案。

说明 生產環境請使用oss sdk, OSS FTP工具主要面向個人用戶使用。
  • 主要特性
    • 跨平台:無論是Windows、Linux還是Mac, 無論是32位還是64位作業系統,無論是圖形介面還是命令列都可以運行。
    • 免安裝: 解壓後可直接運行。
    • 免設定:無需設定即可運行。
    • 透明化: FTP工具是python寫的,您可以看到完整的源碼,我們稍後也會開源到Github。
  • 主要功能
    • 支援檔案和檔案夾的上傳、下載、刪除等操作。
    • 通過Multipart方式,分區上傳大檔案。
    • 支援大部分FTP指令,可以滿足日常FTP的使用需求。
    说明
      1. 目前在1.0版本中,考慮到安裝部署的簡便,OSS FTP工具沒有支援TLS加密。由於FTP協議是明文傳輸的,為了防止您的密碼泄漏,建議將FTP server和client運行在同一台機器上,通過127.0.0.1:port的方式來訪問。
      2. 不支援rename和move操作。
      3. 安裝包解壓後的路徑不要含有中文。
      4. FTP server的管理控制頁面在低版本的IE中可能打不開。
      5. FTP server支援的Python版本:Python2.6和Python2.7。

下載

  • Windows:ossftp-1.0.3-win.zip

    由於Windows不會預設安裝Python2.7,所以安裝包中包含了Python2.7,免去您python安裝配置的麻煩,解壓即可使用。

  • Linux/Mac:ossftp-1.0.3-linux-mac.zip

    由於Linux/Mac系統預設會安裝Python2.7或Python2.6,所以安裝包中不再包含可執行檔python, 只包含了相關依賴庫。

運行

首先解壓之前下載的檔案,然後根據環境情況選擇不同的運行方式。

  • Windows: 雙擊運行start.vbs即可
  • Linux: 開啟終端,運行
    $ bash start.sh
  • Mac:雙擊start.command,或者在終端運行
    $ bash start.command

上述步驟會啟動一個FTP server, 預設監聽在127.0.0.1的2048通信埠。同時,為了方便您對FTP server的狀態進行管控,還會啟動一個web伺服器,監聽在127.0.0.1的8192通信埠。如果您的系統有圖形介面,還會自動開啟控制頁面,如下所示:

说明 大部分情況不要任何配置,就可以運行一個FTP server了,如果想對FTP server進行配置, 請注意需要重啟才能生效。

串連到FTP server

推薦使用FileZilla客戶端去串連FTP server。下載安裝後,按如下方式串連即可:

  • 主機: 127.0.0.1
  • 登入類型: 正常
  • 用戶:access_key_id/bucket_name
  • 密碼:access_key_secret
    说明
    • 用戶中,/是必須的,如用戶tSxyixxxxxxwPMEp/test-hz-jh-002
    • access_key_id和access_key_secret的獲取,請參見OSS存取控制

進階使用

  • 通過控制頁面管理FTP server
    • 修改監聽地址

      如果需要通過網路來訪問FTP server, 那麼需要修改監聽地址,因為預設的監聽地址127.0.0.1隻允許來自本地的訪問。可以修改成內網ip或公網ip。

    • 修改監聽通信埠

      修改FTP server監聽的通信埠, 建議通信埠大於1024, 因為監聽1024以下的通信埠時需要管理員權限.

    • 修改日誌等級

      設定FTP server的記錄層級。FTP server的日誌會輸出到data/ossftp/目錄下, 可以通過控制頁面的日誌按鈕線上查看。預設的日誌界別為INFO, 列印的日誌資訊較少,如果需要更詳細的日誌資訊,可以修改為DEBUG模式。如果希望減少日誌的輸出,可以順位為WARNING或ERROR等。

    • 設定Bucket endpoints

      FTP server預設會探索bucket的所屬location資訊,隨後將請求發到對應的region(如oss-cn-hangzhou.aliyuncs.comoss-cn-beijing.aliyuncs.com),FTP server會優先嘗試內網訪問oss。如果您設定了bucket endpoints, 如設定為test-bucket-a.oss-cn-hangzhou.aliyuncs.com, 那麼當訪問test-bucket-a時,就會使用oss-cn-hangzhou.aliyuncs.com網域名稱。

    • 設定顯示語言

      通過設定cn/en,可修改FTP控制頁面的顯示語言為中文/英文。

    说明
    • 所有修改都需要重啟才能生效。
    • 上述的所有修改其實都是修改的ftp根目錄下的config.json, 所以您可以直接修改該檔案。
  • 直接啟動FTP server(Linux/Mac)

    可以直接啟動ossftp目錄下的ftpserver.py, 免去web_server的開銷。

    $ python ossftp/ftpserver.py &

    配置修改方式同上。

可能遇到的問題

  • 如果串連FTP server時,遇到以下錯誤:

    有兩種可能:

    • 輸入的 access_key_id 和 access_key_secret有誤。

      解決:請輸入正確的資訊後再重試。

    • 所用的access_key資訊為ram 子賬戶的access_key,而子賬戶不具有List buckets許可權。

      解決:當使用子賬戶訪問時,請在控制頁面中指定bucket endpoints, 即告訴FTP server某個bucket應該用什麼endpoint來訪問。同時,子賬戶也需要一些必須的許可權,關於使用ram訪問oss時的存取控制,請參考文檔存取控制。具體如下。

      • 只讀訪問

        OSS FTP工具需要的許可權列表為 ListObjects、GetObject、HeadObject。關於如何建立一個具有隻讀訪問的ram子賬戶,請參考圖文教程如何結合ram實現檔案分享權限設定

      • 上傳檔案

        如果允許ram子賬戶上傳檔案,還需要PutObject。

      • 刪除檔案

        如果允許ram子賬戶刪除檔案,還需要DeleteObject。

  • 如果您在Linux下運行FTP server,然後用FileZilla串連時遇到如下錯誤:
    501 can't decode path (server filesystem encoding is ANSI_X3.4-1968)

    一般是因為本地的中文編碼有問題。在將要運行start.sh的終端中輸入下面的命令,然後再重新啟動即可。

    $ export LC_ALL=en_US.UTF-8; export LANG="en_US.UTF-8"; locale