全部產品
Search
文件中心

Object Storage Service:cp(上傳檔案)

更新時間:Aug 29, 2026

當您需要將本地檔案、圖片、視頻等資源上傳到OSS,或者需要上傳大檔案至OSS時,可以使用ossutil的cp命令。

注意事項

  • 要上傳檔案,您必須具有oss:PutObject、oss:ListParts和oss:AbortMultipartUpload許可權。具體操作,請參見為RAM使用者授予自訂的權限原則。

  • 只有源為目錄時,才能支援批量上傳。

  • ossutil 1.0 中的 --snapshot-path 選項在 ossutil 2.0 中已移除。如需增量上傳,請使用 -u(--update)參數。

  • 使用-u, --update選項時,系統會對每個待檢查檔案(無論目標檔案是否存在)至少發起一次 HEAD 請求以進行比對。在資料變更較少的情境下,將產生大量低效請求,可能影響效能並帶來額外的請求費用。建議結合實際業務情況評估後再謹慎使用,避免不必要的資源消耗。

命令格式

ossutil cp source dest [flags]
重要
  • 從 ossutil 2.3.0 起,--job、--parallel、--bigfile-threshold、--part-size、--write-buffer-size 選項支援通過設定檔設定。在設定檔對應 profile 段下以 key=value 格式追加(例如 job=10),或通過 ossutil config set 寫入。命令列選項的優先順序高於設定檔。

  • 從 ossutil 2.4.0 起,新增 --enable-symlink-dir 選項,cp 命令支援上傳連結子目錄。

參數

類型

說明

source

string

本地檔案路徑。支援相對路徑、絕對路徑和-,當為-時,表示從標準輸入讀入。

dest

string

目標Bucket下的檔案路徑。例如:oss://bucket[/prefix]。

--acl

string

對象的存取權限。取值:

  • private:私人。

  • public-read:公用讀取。

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

  • default:繼承Bucket。

--bandwidth-limit

SizeSuffix

用於限制網路頻寬,控制資料轉送的速率。最小值為1024 B/s。單位預設為B/s。

配置此參數時,可以根據需要為頻寬值指定單位,可選單位包括B(位元組)、K(KB)、M(MB)和G(吉位元組)。例如 50 M表示頻寬節流設定為50 MB/s。

--bigfile-threshold

SizeSuffix

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

說明

從 ossutil 2.3.0 起支援通過設定檔設定。

--cache-control

string

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

--content-disposition

string

指定對象的展示形式。

--content-encoding

string

聲明對象的編碼方式。

--content-type

string

對象的內容類型。

--copy-props

string

確定從來源物件上傳哪些屬性,取值:

  • none

  • metadata

  • default

--checkpoint-dir

string

  • 如果未指定斷點續傳目錄路徑,表示不啟用斷點續傳功能。

  • 如果指定該目錄,則會啟用斷點續傳功能,並將斷點資訊檔儲存在該目錄下的.ossutil_checkpoint子目錄下。

-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。

說明
  • 僅在同時指定 -f、--update、--size-only 或 --ignore-existing 中任意一個參數時生效。

  • 從 ossutil 2.3.0 起支援通過設定檔設定。

--listObjects

/

使用ListObjects介面列舉對象。

--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

僅上傳修改時間在指定時間間隔前的檔案,預設單位是秒,可以使用單位尾碼形式。例如 1h,表示1小時。

說明

--min-age 1h 表示僅上傳修改時間在1小時前或更早的檔案。

--max-age

Duration

僅上傳修改時間在指定時間間隔內的檔案,預設單位是秒,可以使用單位尾碼形式。例如 1h,表示1小時。

說明

--max-age 1h 表示僅上傳修改時間在1小時內的檔案。

--min-mtime

Time

僅上傳修改時間在指定時間之後的檔案,時間格式例如 2006-01-02T15:04:05。

--max-mtime

Time

僅上傳修改時間在指定時間之前的檔案,時間格式例如 2006-01-02T15:04:05。

--min-size

SizeSuffix

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

--no-progress

/

不顯示進度條。

--page-size

int

批量上傳時分頁列舉的對象的最大值(預設值1000),取值範圍1~1000。

--parallel

int

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

說明

從 ossutil 2.3.0 起支援通過設定檔設定。

--part-size

SizeSuffix

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

說明

從 ossutil 2.3.0 起支援通過設定檔設定。

-r, --recursive

/

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

--request-payer

string

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

--size-only

/

僅上傳檔案大小不一致的源檔案。

--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

/

跳過已存在的目標檔案。

說明

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

目標檔案命名規則如下:

  • 單檔案上傳時,如果prefix為空白,則對象的名字為檔案名稱。

  • 單檔案上傳時,如果prefix以"/"結尾,則對象的名字為prefix + 檔案名稱。

  • 批量上傳時,如果prefix為空白,則對象的名字為源檔案相對路徑。

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

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

說明

源檔案相對路徑規則為:從根目錄之後的名字,如cp /root/dir/ ... 時,檔案/root/dir/subdir/test.txt的相對路徑為subdir/test.txt。

大檔案上傳推薦參數

上傳超過 100 MB 的大檔案時,建議搭配以下參數組合,兼顧上傳速度與斷點續傳能力:

參數

推薦值

說明

-j, --job

10

多檔案並發任務數,預設值為 3。僅在同時指定 -f、--update、--size-only 或 --ignore-existing 中任意一個參數時生效。

--parallel

10

單檔案內部操作的並發任務數,用於提升單個大檔案的分區上傳速度。

--checkpoint-dir

/path/to/checkpoint

斷點續傳目錄,在本機伺服器(非 OSS 端)建立。

--checkpoint-dir 指定的目錄在本機伺服器建立,ossutil 會自動在該目錄下建立 .ossutil_checkpoint 子目錄,用於存放斷點資訊檔(.ucp 檔案)。

上傳過程中斷後,重新執行相同的上傳命令即可從斷點繼續上傳,已上傳的分區不會重複傳輸。

以下樣本將本地大檔案 examplebigfile 上傳至 examplebucket 中的 desfolder 檔案夾下,同時啟用多檔案並發任務、單檔案分區並發和斷點續傳:

ossutil cp D:/localpath/examplebigfile oss://examplebucket/desfolder/ -f -j 10 --parallel 10 --checkpoint-dir D:/localpath/checkpoint

使用樣本

上傳單個檔案

  • 上傳單個檔案

    將本地檔案examplefile.txt上傳至examplebucket中的desfolder檔案夾下。

    ossutil cp D:/localpath/examplefile.txt oss://examplebucket/desfolder/

上傳多個檔案

  • 僅上傳檔案夾內的檔案

    將本地檔案夾localfolder中的檔案上傳至examplebucket中的desfolder檔案夾下。

    ossutil cp -r D:/localpath/localfolder/ oss://examplebucket/desfolder/
  • 批量上傳合格檔案

    上傳所有檔案格式為TXT的檔案

    ossutil cp -r D:/localpath/localfolder/ oss://examplebucket/desfolder/ --include "*.txt"
  • 使用10個並發任務同時批量上傳檔案

    ossutil cp -r D:/localpath/localfolder/ oss://examplebucket/desfolder/ -f -j 10

上傳時限速

  • 上傳本地檔案upload.rar至examplebucket中的desfolder檔案夾下,上傳速度為20 MB/s,預設單位為位元組每秒(B/s)。

    ossutil cp D:/upload.rar oss://examplebucket/desfolder/ --bandwidth-limit 20971520
  • 上傳本地檔案file.rar至examplebucket中的desfolder檔案夾下,限制上傳速度為50 MB/s,指定單位為MB每秒(MB/s)

    ossutil cp D:/file.rar oss://examplebucket/desfolder/ --bandwidth-limit 50M