upload-part-copy用於從一個已存在的Object中拷貝資料來上傳一個Part。
注意事項
阿里雲帳號預設擁有設定和擷取Object的許可權。如果您需要通過RAM使用者或者STS的方式進行設定和擷取,您必須擁有
oss:PutObject
和oss:GetObject
許可權。具體操作,請參見為RAM使用者授權自訂的權限原則。當拷貝一個大於1 GB的檔案時,必須使用upload-part-copy的方式進行拷貝。如果想通過單個操作拷貝小於1 GB的檔案,請參見copy-object。
執行upload-part-copy的源Bucket地址和目標Bucket地址必須是同一個Region。
調用該介面上傳Part資料前,必須先調用initiate-multipart-upload來擷取一個OSS伺服器產生的Upload ID。
命令格式
ossutil api upload-part-copy --bucket value --key value --copy-source value --part-number value --upload-id value [flags]
參數 | 類型 | 說明 |
--bucket | string | Bucket名稱。 |
--key | string | Object的完整路徑。 |
--copy-source | string | 拷貝源地址(必須有可讀許可權),其格式為: |
--copy-source-if-match | string | 如果源Object的ETAG值和使用者提供的ETAG相等,則執行拷貝操作;否則返回412 HTTP錯誤碼(預先處理失敗)。 |
--copy-source-if-modified-since | string | 如果指定的時間早於實際修改時間,則正常傳送檔案,並返回200 OK;否則返回304 not modified。 |
--copy-source-if-none-match | string | 如果傳入的ETag值和Object的ETag不匹配,則正常傳輸檔案,並返回200 OK;否則返回304 Not Modified。 |
--copy-source-if-unmodified-since | string | 如果傳入參數中的時間等於或者晚於檔案實際修改時間,則正常傳輸檔案,並返回200 OK;否則返回412 precondition failed錯誤 |
--copy-source-range | string | 源Object的拷貝範圍。 |
--metadata-directive | string | 指定如何設定目標Object的元資訊。 |
--part-number | string | 每一個上傳的Part都有一個標識它的號碼(partNumber)。 |
--tagging | string | 指定Object的標籤。 |
--tagging-directive | string | 指定如何設定目標Object的對象標籤。 |
--upload-id | string | MultipartUpload事件的ID。 |
upload-part-copy命令對應API介面UploadPartCopy。關於API中的具體參數含義,請參見UploadPartCopy。
關於支援的全域命令列選項,請參見支援的全域命令列選項。
使用樣本
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,以JSON格式顯示。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --output-format json
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,以YAML格式顯示。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --output-format json
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,拷貝範圍是0-9。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --copy-source-range bytes=0-9
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,如果srcObject的ETag 等於 123 則執行拷貝。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --copy-source-if-match 123
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,如果srcObject的修改時間早於 Mon, 11 May 2020 08:16:23 GMT 則執行拷貝。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --copy-source-if-unmodified-since "Mon, 11 May 2020 08:16:23 GMT"
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,忽略源object的中繼資料,直接採用請求中指定的中繼資料。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --metadata-directive REPLACE --metadata user=aliyun --metadata email=ali***@aliyuncs.com
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,忽略源Object的對象標籤,直接採用請求中指定的對象標籤。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --tagging-directive Replace --tagging "TagA=A&TagB=B"
從已存在srcbucket裡srcobject的目前的版本中拷貝資料來上傳一個Part,指定object的存取權限以及儲存類型。
ossutil api upload-part-copy --bucket examplebucket --key exampleobject --copy-source /srcbucket/srcobject --upload-id 123 --part-number 1 --object-acl private --storage-class IA