
# 下载示例
本章节案例中的所有命令均以Linux操作系统为例，提供下载操作指导。
假设bucket-test桶内包含如下对象：
```
obs://bucket-test/test1.txt
obs://bucket-test/test2.txt
obs://bucket-test/test3.txt
obs://bucket-test/test4.txt
obs://bucket-test/test5.txt
obs://bucket-test/test6.txt
obs://bucket-test/src1/
obs://bucket-test/src1/test7.txt
obs://bucket-test/src2/
obs://bucket-test/src2/test8.txt
obs://bucket-test/src2/src3/
obs://bucket-test/src2/src3/test9.txt
```
基于以上桶内对象格式，不同下载场景下的命令示例如下：
- 下载bucket-test桶中的test1.txt文件至本地的src1文件夹中，下载命令如下：
  ```
  ./obsutil cp obs://bucket-test/test1.txt  /src1
  ```
  下载完成后，本地生成的文件为：
  ```
  └── src1
      └── test1.txt
  ```
  
- 下载bucket-test桶中的test1.txt文件至本地，如果本地不存在test.txt文件，则直接下载且下载后命名为test.txt，如果本地已存在test.txt文件，则以test1.txt内容覆盖test.txt进行下载。下载命令如下：
  ```
  ./obsutil cp obs://bucket-test/test1.txt  /test.txt
  ```
  下载完成后，本地文件为：
  ```
  └── test.txt
  ```
  
- 递归下载bucket-test桶中的src2文件夹中的所有文件和文件夹（包括src2文件夹本身）至本地已存在的src1文件夹，且下载过程中不进行询问操作，下载命令为：
  ```
  ./obsutil cp obs://bucket-test/src2  /src1 -r -f
  ```
  下载完成后，本地生成的文件为:
  ```
  └── src1
      └── src2
          ├── src3
              └── test9.txt
          └── test8.txt
  ```
  
- 递归下载bucket-test桶中的src2文件夹中的所有文件和文件夹（不包括src2文件夹本身）至本地已存在的src1文件夹，且下载过程中不进行询问操作，下载命令为：
  ```
  ./obsutil cp obs://bucket-test/src2  /src1 -r -f -flat
  ```
  下载完成后，本地生成的文件为：
  ```
  └── src1
      ├── src3
          └── test9.txt
      └── test8.txt
  ```
  
- 递归下载bucket-test桶中的所有文件至本地已存在的src0文件夹中，且下载过程中不进行询问操作，下载命令为：
  ```
  ./obsutil cp obs://bucket-test  /src0 -r -f
  ```
  下载完成后，本地生成的文件为：
  ```
  └── src0
      ├── test1.txt
      ├── test2.txt
      ├── test3.txt
      ├── test4.txt
      ├── test5.txt
      ├── test6.txt
      ├── src1
          └── test7.txt
      └── src2
          ├── src3
              └── test9.txt
          └── test8.txt
  ```
  
- 排除下载bucket-test桶中src1下的src2及其包含的所有文件和文件夹，命令如下：
  ```
  ./obsutil cp obs://bucket-test/src1/ src1 -exclude "*src1/src2*" -r -f -mf
  ```
  下载成功4个对象，下载信息中包含Exclude及内容字样。
  ```
  ./obsutil cp obs://bucket-test/src1/ src1 -exclude "*src1/src2*" -r -f -mf
  Parallel:      5                   Jobs:          5
  Threshold:     50.00MB             PartSize:      auto
  VerifyLength:  false               VerifyMd5:     false
  Exclude:       *src1/src2*
  Include:
  CheckpointDir: xxxx
  OutputDir: xxxx
  TempFileDir: xxxx
  [====================================================] 100.00% tps:87.78 ?/s 4/4 2.39KB/2.39KB 223ms
  Succeed count:   4         Failed count:    0
  Succeed bytes:   2.39KB
  Metrics [max cost:147 ms, min cost:77 ms, average cost:56.00 ms, average tps:8.85, transferred size:2.39KB]
  ```
  下载完成后，本地生成的文件为：
  ```
  └── src1
      ├── src3
          └── test9.txt
      └── test7.txt
  ```
  
 
