拷貝文件(Object)是指在不改變文件內容的情況下,將同一地域下的源存儲空間(Bucket)內的文件復制到目標Bucket,或者將文件復制到相同存儲空間(Bucket)的其他目錄。您可以通過ossutil的cp完成拷貝。
注意事項
要拷貝文件,您必須具有
oss:GetObject
、oss:ListObjects
和oss:PutObject
權限。具體操作,請參見為RAM用戶授權自定義的權限策略。只支持拷貝對象,不支持拷貝未合并的分片。
默認同時復制標簽和對象屬性。可以使用--copy-props選項設置屬性和標簽的復制規則。
命令格式
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 | 對象的訪問權限。取值:
|
--bigfile-threshold | int | 開啟大文件分片上傳、下載或拷貝的閾值(默認值104857600)。 |
--cache-control | string | 指定該對象被下載時網頁的緩存行為。 |
--checkers | int | Number of checkers to run in parallel (缺省值 16) |
--checkpoint-dir | string | 斷點續傳信息的指定目錄(默認值 |
--checksum | / | 僅拷貝文件大小和校驗和(如果存在)不一致的源文件,僅當對象間拷貝有效。 |
--content-disposition | string | 指定對象的展示形式。 |
--content-encoding | string | 聲明對象的編碼方式。 |
--content-type | string | 對象的內容類型。 |
--copy-props | string | 用于設置對象間拷貝時的屬性和標簽復制規則,支持以下三種設置:
|
-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 | 指定如何設置目標對象的元數據。取值:
|
--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 | 對象的存儲類型, 取值:
|
--tagging | strings | 指定對象的標簽,使用key=value格式。 |
--tagging-directive | string | 指定如何設置目標對象的標簽。取值:
|
-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&……"