全部产品
Search
文档中心

对象存储 OSS:cp(下载文件)

更新时间:Oct 29, 2025

当需要将已上传至OSS的文件、图片、视频等资源下载到本地时,可以使用ossutil的cp命令,支持下载多个文件、下载时限速,或者在已开启版本控制的Bucket内下载指定版本文件等。

注意事项

  • 从ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,无需根据系统刷新Binary名称。如果ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考

    权限说明

    阿里云账号默认拥有全部权限。阿里云账号下的RAM用户或RAM角色默认没有任何权限,需要阿里云账号或账号管理员通过RAM PolicyBucket Policy授予操作权限。

    API Action

    说明

    oss:GetObject

    下载Object。

    oss:GetObjectVersion

    可选。通过 --version-id 选项指定下载源文件的特定版本时,需要此权限。

    kms:GenerateDataKey

    可选。下载的Object涉及KMS服务器端加密时,需要此权限。

    kms:Decrypt

    oss:ListObjects

    可选。批量下载文件(递归操作)时,需要授予此操作的权限。

    命令格式

    ossutil cp cloud_url file_url [options]

    参数

    说明

    cloud_url

    OSS文件路径,格式为oss://bucket[/prefix]。如oss://examplebucket/examplefile.txt

    file_url

    本地文件路径。如果目标是目录,需以路径分隔符(/ 或 \)结尾。如Linux系统文件路径/localfolder/examplefile.txt,Windows系统文件路径D:\localfolder\examplefile.txt

    -r, --recursive

    递归操作。当指定该选项时,ossutil会对Bucket下所有符合条件的Object进行操作,否则只对指定的单个Object进行操作。

    -f --force

    强制操作,不进行询问提示。

    -u,--update

    只有当目标文件不存在,或源文件的最后修改时间晚于目标文件时,ossutil才会执行下载操作。

    --maxdownspeed

    最大下载速度,单位为KB/s。默认值为0,表示不限制下载速度。

    --disable-ignore-error

    批量操作时不忽略错误。

    --only-current-dir

    仅下载当前目录下的文件,忽略子目录及子目录下的文件。

    --bigfile-threshold

    设置断点续传文件的大小阈值,单位为字节。

    默认值:100 MB

    取值范围:0~9223372036854775807

    --part-size

    设置分片大小,单位为字节。默认情况下ossutil会根据文件大小自行计算合适的分片大小值。

    取值范围:1~9223372036854775807

    --checkpoint-dir

    指定断点续传记录信息所在的目录。断点续传操作失败时,ossutil会自动创建名为.ossutil_checkpoint的目录,并在该目录下记录checkpoint信息,断点续传成功后会删除该目录。如果指定了该选项,请确保指定的目录可以被删除。

    --range

    下载目标文件的指定字段,并保存为一个新的文件,字段从0开始编号。

    • 指定区间

      例如指定为3-9,表示下载文件的第3个字节到第9个字节(包含第3和第9字节)。

    • 指定开始位置

      例如指定为3-,表示从第3个字节开始到文件结尾(包含第3个字节)。

    • 指定结束位置

      例如指定为-9,表示从0字节到第9个字节(包含第9个字节)。

    --encoding-type

    文件名称的编码方式。取值为url。如果不指定该选项,则表示文件名称未经过编码。

    --include

    包含符合指定条件的所有文件。

    更多信息,请参见include和exclude选项

    --exclude

    不包含符合指定条件的文件。

    更多信息,请参见include和exclude选项

    --meta

    设置文件的元数据,格式为header:value#header:value,示例为Cache-Control:no-cache#Content-Encoding:gzip。有关元数据的介绍,请参见set-meta(管理文件元数据)

    --acl

    文件的读写权限ACL。取值如下:

    • default(默认值):继承Bucket的读写权限。

    • private:只有该Bucket的拥有者可以对该Bucket内的文件进行读写操作,其他人无法访问该Bucket内的文件。

    • public-read:只有Bucket拥有者可以对该Bucket内的文件进行写操作,其他用户(包括匿名访问者)可以对该Bucket中的文件进行读操作。这有可能造成数据的外泄以及费用激增,请谨慎操作。

    • public-read-write:任何人(包括匿名访问者)都可以对该Bucket内文件进行读写操作。这有可能造成数据的外泄以及费用激增,如果被人恶意写入违法信息还可能会侵害合法权益。除特殊场景外,不建议配置公共读写权限。

    --snapshot-path

    指定保存下载文件时的快照信息所在的目录。在下一次下载文件时,ossutil会读取指定目录下的快照信息进行增量下载。

    --disable-crc64

    关闭CRC64数据校验。默认情况下,ossutil进行数据传输时都会打开CRC64校验。

    --payer

    请求的支付方式。如果希望访问指定路径下的资源产生的流量、请求次数等费用由请求者支付,请将此选项的值设置为requester

    --partition-download

    用于分区下载。该选项取值格式为分区编号:总分区数。例如1:5,表示当前ossutil下载分区1,总共有5个分区。分区号从1开始编号,Object的分区规则由工具内部算法决定。通过该选项将待下载的Object分成多个分区,并由多个ossutil命令并行下载,各个ossutil命令下载各自的分区。

    -j,--job

    多文件操作时的并发任务数,默认值为3,取值范围为1~10000。

    --parallel

    单文件操作时的并发任务数,取值范围为1~10000。 如果不设置此选项,默认由ossutil根据操作类型和文件大小自行决定。

    --version-id

    下载指定版本的文件,--version-id选项仅支持在已开启版本控制的Bucket内使用。开启Bucket版本控制命令请参见bucket-versioning(版本控制)

    --start-time

    Unix时间戳。如果输入这个选项,最后更新时间早于该时间的Object会被忽略。

    说明

    仅1.7.18及以上版本支持设置该参数。关于如何升级版本,请参见update(ossutil版本升级)

    --end-time

    Unix时间戳。如果使用该选项,则最后更新时间晚于通过此选项指定时间的Object会被忽略。

    说明
    • 如果同时指定了start-time和end-time,文件的修改时间在start-time和end-time之间才会执行拷贝命令。

    • 仅1.7.18及以上版本支持设置该参数。关于如何升级版本,请参见update(ossutil版本升级)

    关于此命令的其他通用选项,请参见通用选项

    当默认并发数达不到用户的性能要求时,可以调整-j,--jobs--parallel选项来升降性能。默认情况下,ossutil根据文件大小来计算parallel。当批量传输大文件时,实际的并发数为jobs数乘以parallel数。

    • 若执行命令的ECS或服务器的资源(网络、内存、CPU)有限,建议将并发数调低(如100以下)。如果资源未占满,可适当增加并发数。

    • 并发数过高可能因线程切换开销和资源竞争导致性能下降,甚至引发EOF错误。请根据机器的实际资源状况调整-j,--jobs--parallel。进行性能压测时,建议从较低的并发数开始,逐步增加以找到最佳值。

    使用示例

    以下示例均以 Linux 系统为例,请根据操作系统和实际环境修改参数。示例环境假定:

    • Bucket 名称:examplebucket

    • OSS 目录:destfolder/

    • 本地目录:localfolder/

    • 本地文件:examplefile.txt

    下载单个文件

    • 下载文件到指定目录,并沿用原文件名:

      ossutil cp oss://examplebucket/destfolder/examplefile.txt localfolder/
    • 下载文件到指定目录,并重命名为 example.txt

      ossutil cp oss://examplebucket/destfolder/examplefile.txt localfolder/example.txt

    批量下载

    • 使用 -r 选项下载 destfolder 目录及其所有子目录和文件。

      ossutil cp -r oss://examplebucket/destfolder/ localfolder/
    • 使用 --only-current-dir 选项,仅下载当前目录而忽略子目录下的文件。

      ossutil cp oss://examplebucket/destfolder/ localfolder/ --only-current-dir -r
    • 使用 -u 选项,仅下载本地不存在或在 OSS 上已更新的 Object,跳过本地已存在且未改变的文件。

      ossutil cp -r -u oss://examplebucket/destfolder/ localfolder/

    下载符合条件的文件

    • 下载 destfolder 目录下所有非JPG格式的文件:

      ossutil cp -r oss://examplebucket/destfolder/ localfolder/ --exclude "*.jpg"
    • 下载 destfolder 目录下文件名包含 abc,但格式不为JPGTXT 的文件:

      ossutil cp -r oss://examplebucket/destfolder/ localfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt"

    下载时限速

    使用 --maxdownspeed 选项将下载速度限制为 1 MB/s (1024 KB/s)。

    ossutil cp -r oss://examplebucket/destfolder/ localfolder/ --maxdownspeed 1024

    范围下载

    使用 --range 选项将examplefile.txt的第10到第20个字符作为一个文件下载到本地。

    ossutil cp oss://examplebucket/destfolder/examplefile.txt localfolder/ --range 10-20

    下载指定时间范围文件

    使用 --start-time--end-time选项仅下载destfolder 目录下修改时间在北京时间2023年10月31日10:09:18至2023年10月31日12:55:58内的文件。

    ossutil cp -r oss://examplebucket/destfolder/ localfolder/ --start-time 1698718158 --end-time 1698728158

    下载指定版本的文件

    首先,使用 ls --all-versions 命令获取 Object 的所有版本 ID,再使用 --version-id 选项下载指定版本。

    说明

    --version-id选项仅支持在已开启版本控制的Bucket内使用。开启Bucket版本控制命令请参见bucket-versioning(版本控制)

    ossutil cp oss://examplebucket/test.jpg localfolder/ --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk

    下载并生成快照信息

    使用 --snapshot-path选项在指定的目录下生成文件下载的快照信息,在下一次指定该选项下载时,ossutil会读取指定路径下的快照信息进行增量下载,详情参见上传并生成快照

    ossutil cp -r oss://examplebucket/destfolder/ localfolder/ --start-time 1698718158 --end-time 1698728158

    跨账号或跨地域下载

    使用 -e, -i, -k 通用选项,从另一个账号位于“华东2(上海)”地域的 Bucket 下载文件。

    说明

    需要根据Bucket所在地域填写对应的Endpoint。更多信息,请参见地域和Endpoint

    ossutil cp oss://examplebucket/exampleobject.txt  localfolder/  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret