本文介紹在使用ossutil時可能出現的問題及處理方法。
從ossutil 1.6.16版本開始,命令列中Binary名稱支援直接使用ossutil,您無需根據系統重新整理Binary名稱。如果您的ossutil版本低於1.6.16,則需要根據系統重新整理Binary名稱。更多資訊,請參見命令列工具ossutil命令參考。
ossutil支援v4簽名嗎?
1.7.12及以上版本支援v4簽名。關於v4簽名的更多資訊,請參見簽名版本4(推薦)。
ossutil在原有命令的基礎上,添加--sign-version、--region參數。例如:您可以使用以下命令,建立杭州地區的Bucket。
./ossutil64 --sign-version v4 --region cn-hangzhou mb oss://examplebucket
低頻儲存或標準儲存的檔案是否支援同步檔案操作?
低頻儲存或標準儲存的檔案支援同步檔案操作。關於同步檔案的更多資訊,請參見簡介。
如何設定不覆蓋同名檔案
在ossutil執行命令中增加-u參數,則不會覆蓋同名檔案。
使用-u參數上傳檔案時出現skip提示
問題分析:使用-u參數上傳檔案的時候,ossutil會將上傳檔案和儲存空間(Bucket)內已有檔案進行一次比對。
若發現上傳的檔案與目標Bucket內已有檔案同名,且該檔案的最後修改時間早於或等於Bucket內已有檔案,上傳時會跳過該檔案;若該檔案的最後修改時間晚於Bucket內已有檔案,則重新上傳該檔案。所以使用-u參數上傳檔案時出現skip提示是正常現象。
解決方案:確認Bucket內檔案上傳無問題後忽略該提示。
檔案解凍時出現403報錯
問題分析:操作解凍檔案的過程中出現403,有以下兩種可能性。
若您是使用RAM使用者操作檔案,可能是RAM使用者權限不足,無目標檔案的操作許可權。
您檔案內容違禁OSS被封鎖了。
解決方案:
RAM使用者權限不足:增加RAM使用者權限。
檔案內容違禁:刪除或忽略該檔案。
使用ls命令查看Bucket無檔案,刪除Bucket時報錯
問題分析:使用ls命令列舉Bucket內的檔案且未攜帶任何選項時,無法列舉片段、歷史版本檔案(僅存在於開啟過版本控制的Bucket)。若Bucket為非空(即Bucket中存在片段、歷史版本檔案),僅使用rm命令無法刪除該Bucket。
解決方案:
Bucket及檔案被刪除後,無法恢複,請謹慎使用該命令。
先刪除片段和歷史版本檔案(未開啟過版本控制請忽略),再刪除Bucket。
刪除片段和歷史版本檔案。
列舉並刪除片段:
./ossutil64 ls oss://bucket1 -m ./ossutil64 rm -m oss://bucket1 -r
列舉並刪除歷史版本檔案:
./ossutil64 ls oss://bucket1 --all-versions ./ossutil64 rm oss://bucket1 --all-versions -r
刪除Bucket。
./ossutil64 rm oss://bucket1 -b
強制移除Bucket。
若儲存空間未開啟版本控制,使用如下命令強制移除Bucket:
./ossutil64 rm oss://bucketname -abrf
若儲存空間已開啟版本控制,使用如下命令強制移除Bucket:
./ossutil64 rm oss://bucketname -abrf --all-versions
檔案上傳、下載進度超過100%
問題分析:ossutil在上傳、下載檔案時,會自動產生一個名為.ossutil_checkpoint檔案夾。當目標檔案超過100 MB時,ossutil預設使用斷點續傳上傳或下載目標檔案,並將過程中產生的斷點資訊檔儲存在.ossutil_checkpoint檔案夾中。上傳、下載任務完成後,會自動刪除這個檔案夾。若單機運行超過一個ossutil執行個體,且都在進行上傳或下載任務,當其中一個ossutil的任務完成後,會自動刪除.ossutil_checkpoint檔案夾,導致其它需要使用斷點續傳的ossutil任務進度超過100%且無法完成。
解決方案:
將當前任務結束,重新開始上傳、下載任務。
在cp命令中加上--checkpoint-dir參數,並手動指定一個與預設checkpoint檔案夾不同名的檔案夾。例如:
./ossutil64 cp oss://bucket1/myphoto.jpg /dir --checkpoint-dir checkpoint
使用ossutil發起單個檔案的下載請求,但OSS日誌裡面有多條請求記錄
問題分析:出現該問題有兩種可能。
請求異常或請求失敗時,ossutil會進行重試操作,預設為10次。
如果您下載的檔案超過100 MB,ossutil會使用range方式去請求,即每次請求該檔案的部分內容,通過多次請求完成完整檔案的下載。因此,超過100 MB的檔案下載時也會產生多條請求記錄 。
使用ossutil下載檔案時,下載任務中斷怎麼辦
檔案下載任務中斷的情境與影響因素
下載較大檔案時,可能出現下載時間過長,任務中斷的情況。
影響因素:網路頻寬節流設定,網路穩定性較差。
下載較大檔案時返回EOF錯誤碼,任務中斷。
影響因素:網路中斷、磁碟讀寫速度較慢無法匹配大檔案高速下載的資料寫入需求。
解決方案:配置斷點檔案續傳。
以cp命令為例,您可以在上傳檔案時設定斷點檔案(--checkpoint-dir),指定斷點續傳所在的目錄。
./ossutil64 cp examplefile.txt oss://examplebucket/desfolder/ --checkpoint-dir localfolder/
關於如何設定斷點檔案(--checkpoint-dir),請參見命令格式。
使用ossutil執行相關命令時,報錯Error: accessKeyID and ecsUrl are both empty
問題分析:未在home目錄下組建組態檔案。
解決方案:
使用ossutil執行相關命令之前,需在目前使用者的home目錄下組建組態檔案。具體步驟,請參見安裝ossutil。
使用ossutil執行相關命令時單獨指定設定檔路徑。例如,通過cp命令上傳檔案時指定設定檔路徑:
./ossutil64 cp examplefile.txt oss://examplebucket/destfolder/ -c /home/admin/.ossutilconfig
通過ossutil上傳的檔案的content-type為什麼會有charset=utf-8
問題分析:上傳檔案時,ossutil會根據檔案的副檔名,尋找關聯的MIME類型來設定檔案的Content-Type。在尋找關聯的MIME類型時,會通過Go的標準庫MIME的介面尋找,該介面對於文本類型的會自動添加charset=utf-8
,例如,對於.htm副檔名的檔案會返回text/html; charset=utf-8
。
解決方案:請升級到1.7.14及之後的版本。你可以通過重新安裝來升級ossutil,具體操作,請參見安裝ossutil。
是否可以通過ossutil查詢一個目錄的大小
您可以通過du命令查詢目錄的大小,du命令會通過ListObjects介面擷取目錄下的所有檔案資訊,再進行統計。如果該目錄下的檔案數量很多,需要花費很長時間。
更多資訊,請參見du(擷取大小)。
如何產生包含自訂網域名的簽名URL
為Bucket配置自訂網域名。
具體操作,請參見配置自訂網域名。
通過sign命令產生簽名URL。
具體操作,請參見sign(產生簽名URL)。
ossutil查詢檔案時,是否支援排序?
ossutil在查詢檔案時,不支援排序。
使用ossutil執行相關命令時,報錯no such host
問題原因:Endpoint設定不正確。
解決方案:正確設定-e參數,或者將Endpoint放入設定檔中。其中,-e參數指定Bucket對應的Endpoint,例如:-e oss-cn-shanghai.aliyuncs.com
,Endpoint中請不要添加其他欄位。各地區Endpoint詳情,請參見訪問網域名稱和資料中心。
du命令如何計費
du命令執行後,如果不開啟--all-versions,調用ListObjects介面;如果開啟--all-versions,調用ListObjectVersions介面。同時會調用ListMultipartUploads介面,產生對應的請求費用。更多資訊,請參見請求費用。
如果有分區,會額外產生 ListUploadedParts請求。