copy-object用於拷貝同一地區下相同或不同儲存空間(Bucket)之間的檔案(Object)。
注意事項
阿里雲帳號預設擁有設定和擷取Object的許可權。如果您需要通過RAM使用者或者STS的方式進行設定和擷取,您必須擁有
oss:PutObject
和oss:GetObject
許可權。具體操作,請參見為RAM使用者授權自訂的權限原則。如果需要恢複Object的早期版本為目前的版本,您只需將Object的早期版本拷貝到同一個Bucket中,OSS會將該Object對應的早期版本置為目前的版本。
如果源Bucket和目標Bucket相同,則Object的大小無限制。如果源Bucket和目標Bucket不同,則建議拷貝小於1 GB的Object。當您需要拷貝大於1 GB的Object時,請使用upload-part-copy。
如果源Object為軟連結,則只拷貝軟連結,無法拷貝軟連結指向的檔案內容。
命令格式
ossutil api copy-object --bucket value --key value --copy-source value [flags]
參數 | 類型 | 說明 |
--bucket | string | Bucket名稱。 |
--key | string | Object的完整路徑。 |
--forbid-overwrite | string | 指定CopyObject操作時是否覆蓋同名目標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錯誤 |
--metadata | stringArray | 指定對象的使用者中繼資料,使用key=value格式,如需要自訂攜帶的中繼資料,需配置以x-oss-meta-*為首碼的參數。 |
--metadata-directive | string | 指定如何設定目標Object的元資訊。 |
--object-acl | string | 指定Object的存取權限。 |
--server-side-encryption | string | 指定伺服器端加密方式。 |
--server-side-encryption-key-id | string | 表示KMS託管的使用者主要金鑰。 |
--storage-class | string | 指定Object的儲存類型。 |
--tagging | string | 指定Object的標籤。 |
--tagging-directive | string | 指定如何設定目標Object的對象標籤。 |
copy-object命令對應API介面CopyObject。關於API中的具體參數含義,請參見CopyObject。
關於支援的全域命令列選項,請參見支援的全域命令列選項。
使用樣本
拷貝
srcBucket
儲存空間下的srcObject到examplebucket
儲存空間下的exampleobject。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /srcBucket/srcObject
拷貝
examplebucket
儲存空間下的srcObject到exampleobject。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,以JSON格式顯示。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --output-format json
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,以YAML格式顯示。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --output-format yaml
拷貝
examplebucket
儲存空間下的srcObject到exampleobject並禁止覆蓋同名目標Object。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --forbid-overwrite true
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,如果srcObject的ETag等於123則執行拷貝。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --copy-source-if-match 123
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,如果srcObject的修改時間早於 Mon, 11 May 2020 08:16:23 GMT則執行拷貝。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --copy-source-if-unmodified-since "Mon, 11 May 2020 08:16:23 GMT"
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,忽略源srcObject的中繼資料,直接採用請求中指定的中繼資料。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --metadata-directive REPLACE --metadata user=aliyun --metadata email=ali***@aliyuncs.com
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,指定object伺服器端加密方式。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --server-side-encryption KMS --server-side-data-encryption SM4 --server-side-encryption-key-id 9468da86-3509-4f8d-a61e-6eab1eac****
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,忽略源Object的對象標籤,直接採用請求中指定的對象標籤。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --tagging-directive Replace --tagging "TagA=A&TagB=B"
拷貝
examplebucket
儲存空間下的srcObject到exampleobject,指定object的存取權限以及儲存類型。ossutil api copy-object --bucket examplebucket --key exampleobject --copy-source /examplebucket/srcObject --object-acl private --storage-class IA