您可以通过cp命令将OSS的文件下载到本地。

说明 cp命令的格式、支持的参数请参见 简介

示例环境

本文以Linux系统为例,将OSS内的文件下载到本地。您在实际使用中,请根据您的系统和使用环境修改对应参数。示例环境如下:

  • 操作系统:Linux
  • 目标Bucket:examplebucket
  • 目标Bucket指定目录:desfolder
  • 本地文件:examplefile.txt(根目录下的文件)
  • 本地文件夹:localfolder(根目录下的文件夹)

简单下载示例

  • 下载单个文件

    下载时,若未指定本地文件名,则默认使用原文件名;若指定文件名,则按照指定的文件名保存在本地。

    • 沿用原文件名保存文件
      ./ossutil cp oss://examplebucket/desfolder/examplefile.txt localfolder/
    • 按指定文件名保存文件
      ./ossutil cp oss://examplebucket/desfolder/examplefile.txt localfolder/example.txt
  • 下载文件夹
    ./ossutil cp -r oss://examplebucket/desfolder/ localfolder/
  • 从开通了请求者付费模式的Bucket中下载文件
    ./ossutil cp oss://my-bucket/test.mp4 localfolder/ --payer=requester
  • 批量下载并跳过已有文件
    批量下载时,指定 --update(可缩写为 -u)选项,若本地与OSS没有同名文件,或本地同名文件的最后修改时间早于OSS文件,ossutil会下载该文件;若本地已有同名文件,且文件的最后修改时间晚于OSS内文件时,ossutil会跳过该文件。命令如下:
    ./ossutil cp -r oss://examplebucket/desfolder/  localfolder/  --update                           
    该选项可用于当批量下载失败重传或需要下载增量文件时,跳过已经下载成功的文件。
  • 仅下载当前目录下的文件,忽略子目录
    ./ossutil cp oss://examplebucket/desfolder/ localfolder/ --only-current-dir -r

范围下载

下载文件时,可以通过 --range选项指定下载范围。例如将 examplefile.txt的第10到第20个字符作为一个文件下载到本地,命令如下:
./ossutil cp oss://examplebucket/desfolder/examplefile.txt localfolder/  --range=10-20
Succeed: Total num: 1, size: 11. OK num: 1(download 1 objects).

下载并生成快照信息

批量下载时,若指定 --snapshot-path选项,ossutil在指定的目录下生成文件下载的快照信息,在下一次指定该选项下载时,ossutil会读取指定路径下的快照信息进行增量下载。详情请参见 上传并生成快照
./ossutil cp -r oss://examplebucket/desfolder/ localfolder/ --snapshot-path=path                                

批量下载符合指定条件的文件

您可以使用 --include--exclude参数,在下载时选定符合条件的文件。详情请参见 批量上传符合条件的文件
  • 下载所有文件格式不为JPG的文件
    ./ossutil cp oss://examplebucket/desfolder/ localfolder/ --exclude "*.jpg" -r
  • 下载所有文件名包含abc且不是JPGTXT格式的文件
    ./ossutil cp oss://examplebucket/desfolder/ localfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r

在已开启版本控制的Bucket内下载指定版本文件

开启Bucket的版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。您可以在 cp命令中增加 --version-id选项下载指定版本文件,命令如下:
./ossutil cp oss://my-bucket/test.jpg localfolder/ --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk
注意
  • 使用--version-id选项前,需使用ls --all-versions命令获取文件的versionid。
  • --version-id选项仅支持在已开启版本控制的Bucket内使用。开启Bucket版本控制命令请参见bucket-versioning