当您需要将已上传至OSS的文件、图片、视频等资源下载到本地时,可以使用ossutil的cp命令。
注意事项
要下载文件,您必须具有oss:GetObject和oss:ListObjects权限。具体操作,请参见为RAM用户授予自定义的权限策略。
命令格式
ossutil cp oss://bucket[/prefix] local-path [flags]| 参数 | 类型 | 说明 | 
| local-path | string | 支持相对路径、绝对路径和 | 
| prefix | string | 对象前缀。当prefix以"/"结尾时,只支持批量操作。当prefix不以"/"结尾时,根据命令行选项判断为单对象下载还是批量下载。 | 
| --acl | string | 对象的访问权限。取值: 
 | 
| --bigfile-threshold | int | 开启大文件分片上传、下载或拷贝的阈值(默认值104857600)。 | 
| --cache-control | string | 指定该对象被下载时网页的缓存行为。 | 
| --checkers | int | 并行运行的检查器数量(默认值为16)。 | 
| --checkpoint-dir | string | 断点续传信息的指定目录(默认值 | 
| --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 | string | 指定缓存内容的绝对过期时间。 | 
| --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-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 | 仅下载修改时间在指定时间间隔前的文件,默认单位是秒,可以使用单位后缀形式。例如 1h,表示1小时。 说明  
 | 
| --max-age | Duration | 仅下载修改时间在指定时间间隔内的文件,默认单位是秒,可以使用单位后缀形式。例如 1h,表示1小时。 说明  
 | 
| --min-mtime | Time | 仅下载修改时间在指定时间之后的文件,时间格式:UTC时间。例如2006-01-02T15:04:05。 说明  
 | 
| --max-mtime | Time | 仅下载修改时间在指定时间之前的文件,时间格式:UTC时间,例如 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 | 单文件内部操作的并发任务数。 | 
| --part-size | SizeSuffix | 分片大小,默认情况下根据文件大小自行计算合适的分片大小值。取值范围100KiB~5GiB。 | 
| -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 | / | 跳过已存在的目标文件。 | 
关于支持的全局命令行选项,请参见支持的全局命令行选项。
目标文件命名规则如下:
- 单文件下载时,如果目的为目录,则在该目录下创建源文件相对路径的文件。 
- 单文件下载时,如果目的为文件或者不存在, 则与目的文件名保持一致。 
- 批量下载时,则在目的根目录下,以源文件相对路径,逐级创建子目录,直到创建文件。 
源文件相对路径规则为:去掉prefix包括最后一个 '/' 之前的字符后的名字,
cp oss://bucket/root/dir/ ... 时,对象root/dir/subdir/test.txt 的相对路径为subdir/test.txt。
使用示例
下载单个文件
下载文件时如果未指定文件名,则默认使用原文件名保存在本地。如果指定文件名,则按照指定文件名保存在本地。
- 沿用原文件名保存文件 - ossutil cp oss://examplebucket/examplefile.txt D:/localpath
- 按指定文件名保存文件 - ossutil cp oss://examplebucket/examplefile.txt D:/localpath/example.txt
下载多个文件
- 下载某一类文件 - 如果您希望同时下载多个文件名规律的文件,例如这些文件均包含相同前缀或者后缀,此时您可以结合--include和--exclude选项在下载时选择符合条件的文件。 - 下载所有文件格式不为JPG的文件: - ossutil cp oss://examplebucket/destfolder/ D:/localpath/ --exclude "*.jpg" -r
- 下载文件夹 - ossutil cp -r oss://examplebucket/destfolder/ D:/localpath/
- 下载Bucket根目录下的所有文件 - ossutil cp -r oss://examplebucket D:/localpath/