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