全部產品
Search
文件中心

Object Storage Service:cp(拷貝檔案)

更新時間:Sep 28, 2024

拷貝檔案(Object)是指在不改變檔案內容的情況下,將同一地區下的源儲存空間(Bucket)內的檔案複製到目標Bucket,或者將檔案複製到相同儲存空間(Bucket)的其他目錄。您可以通過ossutil的cp完成拷貝。

注意事項

  • 要拷貝檔案,您必須具有oss:GetObjectoss:ListObjectsoss:PutObject許可權。具體操作,請參見為RAM使用者授權自訂的權限原則

  • 只支援拷貝對象,不支援拷貝未合并的分區。

  • 預設同時複製標籤和對象屬性。可以使用--copy-props選項設定屬性和標籤的複製規則。

  • 不支援跨帳號或者跨地區拷貝。如果您需要跨帳號或者跨地區拷貝(遷移)檔案,請使用ossimport或者線上遷移服務

命令格式

ossutil cp oss://src_bucket[/src_prefix] oss://dest_bucket[/dest_prefix] [flags]

參數

類型

說明

src_bucket

string

源Bucket名稱。

src_prefix

string

源Bucket下的某個檔案目錄或指定首碼。

dest_bucket

string

目標Bucket名稱。

dest_prefix

string

目標Bucket下的某個檔案目錄或指定首碼。

--acl

string

對象的存取權限。取值:

  • private:私人。

  • public-read:公用讀取。

  • public-read-write:公用讀寫。

  • default:繼承Bucket。

--bigfile-threshold

int

開啟大檔案分區上傳、下載或拷貝的閾值(預設值104857600)。

--cache-control

string

指定該對象被下載時網頁的緩衝行為。

--checkers

int

Number of checkers to run in parallel (預設值 16)

--checkpoint-dir

string

斷點續傳資訊的指定目錄(預設值.ossutil_checkpoint/)。

--checksum

/

僅拷貝檔案大小和校正和(如果存在)不一致的源檔案,僅當對象間拷貝有效。

--content-disposition

string

指定對象的展示形式。

--content-encoding

string

聲明對象的編碼方式。

--content-type

string

對象的內容類型。

--copy-props

string

用於設定對象間拷貝時的屬性和標籤複製規則,支援以下三種設定:

  • default(預設值):同時拷貝對象屬性和標籤。對象屬性包括content-type、content-language、content-encoding、content-disposition、cache-control、expires和metadata(自訂中繼資料)。

  • metadata:只拷貝對象屬性。

  • none:只複製資料,忽略掉對象屬性和標籤。

-d, --dirs

string

返回目前的目錄下的檔案和子目錄,而非遞迴顯示所有子目錄下的所有檔案。

--encoding-type

string

輸入的對象名或檔案名稱的編碼方式。取值:url。

--end-with

string

按字母排序,返回設定值之前的對象,包含設定值。

--exclude

stringArray

路徑或檔案名稱的排除規則。

--exclude-from

stringArray

從規則檔案裡讀取排除規則。

--expires

stringArray

指定緩衝內容的絕對到期時間。

--files-from

stringArray

從檔案中讀取源檔案名稱列表,忽略空行或注釋行。

--files-from-raw

stringArray

從檔案中讀取源檔案名稱列表。

--filter

stringArray

路徑或檔案名稱過濾規則。

--filter-from

stringArray

從規則檔案讀取過濾規則。

-f, --force

/

強制操作,不進行詢問提示。

--include

stringArray

路徑或檔案名稱的包含規則。

--include-from

stringArray

從規則檔案裡讀取包含規則。

-j, --job

int

多檔案操作時的並發任務數(預設值3)。

--list-objects

/

使用ListObjects介面列舉對象。

--max-age

Duration

不傳輸任何比此更早的檔案。預設是秒,或單位尾碼形式 ms|s|m|h|d|w|M|y(預設值off)。

--max-mtime

Time

不傳輸任何比此更新的檔案,UTC時間格式 (預設值off)。

--max-size

SizeSuffix

限制傳輸的最大檔案大小,預設是位元組,或單位尾碼形式B|K|M|G|T|P,1K(KiB)=1024B。

--metadata

strings

指定對象的使用者中繼資料,使用key=value格式。

--metadata-directive

string

指定如何設定目標對象的中繼資料。取值:

  • COPY

  • REPLACE

--metadata-exclude

stringArray

對象中繼資料的排除規則。

--metadata-filter

stringArray

對象中繼資料過濾規則。

--metadata-filter-from

stringArray

從規則檔案讀取對象中繼資料過濾規則。

--metadata-include

stringArray

對象中繼資料的包含規則。

--min-age

Duration

不傳輸任何比此更新的檔案。預設是秒,或單位尾碼形式 ms|s|m|h|d|w|M|y(預設值為off)。

--min-mtime

Time

不傳輸任何比此更早的檔案,UTC時間格式(預設值off)。

--min-size

SizeSuffix

限制傳輸的最小檔案大小,預設是位元組,或單位尾碼形式B|K|M|G|T|P,1K(KiB)=1024B。

--no-progress

/

不現顯示度條。

--page-size

int

返回對象或檔案的最大數(預設值1000),取值範圍1~1000。

--parallel

int

單檔案內部操作的並發任務數。

--part-size

SizeSuffix

分區大小,預設情況下根據檔案大小自行計算合適的分區大小值。取值範圍100Ki~5Gi。

-r, --recursive

/

遞迴進行操作。當指定該選項時,命令會對儲存空間下所有合格對象進行操作,否則只對路徑指定的對象進行操作。

--request-payer

string

請求的支付方式,如果為要求者付費模式,請設定該值。取值:requester。

--size-only

/

僅拷貝檔案大小不一致的源檔案。

--start-after

string

按字母排序,返回設定值之後的對象,不包含設定值。

--storage-class

string

對象的儲存類型, 取值:

  • Standard:標準儲存。

  • IA:低頻儲存。

  • Archive:Archive Storage。

  • ColdArchive:冷Archive Storage。

  • DeepColdArchive:深度冷Archive Storage。

--tagging

strings

指定對象的標籤,使用key=value格式。

--tagging-directive

string

指定如何設定目標對象的標籤。取值:

  • COPY

  • REPLACE

-u, --update

/

僅拷貝源檔案新於目標檔案。

--ignore-existing

/

跳過已存在的目標檔案。

說明

關於支援的全域命令列選項,請參見支援的全域命令列選項

目標檔案命名規則如下:

  • 單檔案複製時,如果dest_prefix為空白,則對象的名字為源檔案相對路徑。

  • 單檔案複製時,如果dest_prefix以"/"結尾,則對象的名字為dest_prefix + 源檔案相對路徑。

  • 單檔案複製時,如果dest_prefix不以"/"結尾, 則與dest_prefix保持一致。

  • 批量複製時,如果dest_prefix以"/"結尾,則對象的名字為dest_prefix + 源檔案相對路徑。

  • 批量複製時,如果dest_prefix不以"/"結尾,則對象的名字為dest_prefix + "/" +源檔案相對路徑。

使用樣本

  • 拷貝單個檔案

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/desfolder/
  • 拷貝增量檔案

    批量拷貝時,如果指定--update選項,只有當目標檔案不存在,或源檔案的最後修改時間晚於目標檔案時,ossutil才會執行拷貝操作。命令如下:

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/desfolder/ -r --update

    該選項可用於當批量拷貝失敗重傳時,跳過已經拷貝成功的檔案,實現增量拷貝。

  • 重新命名檔案

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/example.txt 

    通過cp命令重新命名檔案時,原檔案仍存在,您可以在重新命名後刪除原檔案。

  • 修改檔案對象標籤

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"