全部產品
Search
文件中心

Object Storage Service:使用ossftp工具上傳檔案到OSS失敗的解決方案

更新時間:Jan 11, 2025

問題描述

使用阿里雲Object Storage Service時,ossftp作為一個特殊的FTP server,可以將對檔案、檔案夾的操作映射為對OSS的操作,使您可以基於FTP協議來管理儲存在OSS上的檔案。本文介紹了運用ossftp工具無法通過FTP上傳檔案到OSS的問題原因及解決方案。

問題原因

出現檔案無法上傳的原因如下:

  • 並發量比較高:並發量比較高的情況下,會出現ossftp上傳失敗的現象。

  • 存在遠距離訪問的問題:在遠距離請求的情境下,由於遠距離鏈路的限制,出現訪問慢或無法訪問等普遍現象。

  • Bucket和Endpoint不匹配:OSS會為每一個儲存空間(Bucket)分配預設的訪問網域名稱(Endpoint),Bucket和Endpoint不匹配就會導致上傳錯誤。

  • Bucket許可權不正確:當Bucket讀寫權限設定為公用讀寫時,任何人(包括匿名訪問者)都可以對該Bucket內的檔案進行讀寫操作。沒有正確的配置Bucket存取權限,會導致檔案上傳失敗。

  • 運行FTP Server的機器由於連接埠限制導致資料轉送不成功:由於FTP協議的控制連接埠和資料連接埠不同,當FTP Server工作在被動模式下,每當需要傳輸資料時,FTP Server會開啟1個隨機連接埠,等待用戶端來串連。所以當FTP Server所在機器有連接埠限制時,可能會導致資料無法正常傳輸。

  • 用戶端和FTP Server之間的串連經常斷開:FTP用戶端一般都有逾時設定,若逾時串連就會斷開。

解決方案

運用ossftp工具上傳檔案失敗時,可以參見以下步驟進行排查:

  1. 首先請檢查您的並發量是否過高,如果存在並發高的情況,建議在生產環境中使用ossutilossbrowserSDK等工具管理您的OSS。

    說明

    ossftp主要提供給個人測試時使用,不建議在生產和高並發的環境中使用。

  2. 請確認上傳的用戶端裝置與OSS所屬的地區是否涉及遠距離傳輸。若存在遠距離傳輸請求,可以開通OSS傳輸加速,對整體鏈路做一個最佳化,最佳化完成後重新上傳檔案看是否能上傳成功。如何開通OSS傳輸加速,請參見開啟傳輸加速

  3. 檢查您的Bucket Endpoint配置是否匹配,首先確認您的Bucket名稱是否正確,相關地區的Bucket只能通過本地區的訪問網域名稱來進行訪問。例如華東1(杭州)地區的訪問網域名稱如下:

    說明

    內網、外網訪問Endpoint可直接使用,無需額外配置,而傳輸加速Endpoint使用前需先開啟Bucket的傳輸加速功能 。

    • 外網Endpoint:oss-cn-hangzhou.aliyuncs.com

    • 內網Endpoint:oss-cn-hangzhou-internal.aliyuncs.com

    • 傳輸加速Global AccelerationEndpoint:oss-accelerate.aliyuncs.com

    • 傳輸加速非中國內地加速Endpoint:oss-accelerate-overseas.aliyuncs.com

  4. 檢查目前使用者是否有Bucket讀寫權限,如果RAM子使用者沒有相應的許可權,請參見如何對OSS進行存取權限控制授予子使用者權限。

  5. 請檢查ossftp所在機器是否存在連接埠限制,若存在則開啟相應的連接埠。

    重要

    所有修改都需要重啟才會生效。

    • 若ossftp所在的機器是本地機器,直接啟動ossftp目錄下的ftpserver.py,在運行ftpserver.py時通過指定--passive_ports_start--passive_ports_end參數來設定本地連接埠的起止範圍,然後將該範圍的連接埠都開啟。

    • 若ossftp所在的機器是ECS雲端服務器,請至ECS管理主控台修改安全性群組規則,詳情請參見修改安全性群組規則

  6. 檢查您的FTP用戶端是否有逾時設定,若存在逾時設定則設定不逾時。以FileZilla工具為例,在設定>串連裡,可以將逾時設定為0。

  7. 若執行完上面的操作仍沒有解決問題,請參見ossftp常見問題進行排查。