
# 上传示例
本章节案例中的所有命令均以Linux操作系统为例，提供上传操作指导。
假设本地文件夹的格式如下：
```
└── src1
    ├── src2
        ├── test1.txt
        └── test2.txt
    ├── src3
    └── test3.txt
```
基于以上文件夹格式，不同上传场景的命令示例如下：
- 上传本地src1文件夹下的test3.txt文件至bucket-test桶的根目录，命令如下：
  ```
  ./obsutil cp /src1/test3.txt  obs://bucket-test
  ```
  成功上传后，桶内生成对象为：
  ```
  ./obs://bucket-test/test3.txt
  ```
  
- 上传本地src1文件夹下的test3.txt文件至bucket-test桶的根目录，并且重命名为aaa.txt，命令如下：
  ```
  ./obsutil cp /src1/test3.txt  obs://bucket-test/aaa.txt
  ```
  成功上传后，桶内生成对象为：
  ```
  ./obs://bucket-test/aaa.txt
  ```
  
- 上传本地src1文件夹下的test3.txt文件至bucket-test桶的src文件夹中，命令如下：
  ```
  ./obsutil cp /src1/test3.txt  obs://bucket-test/src/
  ```
  成功上传后，桶内生成对象为：
  ```
  ./obs://bucket-test/src/test3.txt
  ```
  
- 递归上传本地src2文件夹中的所有文件（包括src2文件夹本身）至bucket-test桶的根目录，且上传过程中不进行询问操作，命令如下：
  ```
  ./obsutil cp /src1/src2  obs://bucket-test -r -f
  ```
  成功上传后，桶内生成对象为：
  ```
  obs://bucket-test/src2/
  obs://bucket-test/src2/test1.txt
  obs://bucket-test/src2/test2.txt
  ```
  
- 递归上传本地src1文件夹中的所有文件和文件夹（包括src1文件夹本身）至bucket-test桶的src文件夹下，且上传过程中不进行询问操作，命令如下：
  ```
  ./obsutil cp /src1  obs://bucket-test/src -r -f
  ```
  成功上传后，桶内生成对象为：
  ```
  obs://bucket-test/src/src1/
  obs://bucket-test/src/src1/src2/
  obs://bucket-test/src/src1/src2/test1.txt
  obs://bucket-test/src/src1/src2/test2.txt
  obs://bucket-test/src/src1/src3/
  obs://bucket-test/src/src1/test3.txt
  ```
  
- 递归上传本地src1文件夹中的所有文件和文件夹（不包括src1文件夹本身）至bucket-test桶的src文件夹下，且上传过程中不进行询问操作，命令如下：
  ```
  ./obsutil cp /src1  obs://bucket-test/src -r -f -flat
  ```
  成功上传后，桶内生成对象为：
  ```
  obs://bucket-test/src/
  obs://bucket-test/src/src2/
  obs://bucket-test/src/src2/test1.txt
  obs://bucket-test/src/src2/test2.txt
  obs://bucket-test/src/src3/
  obs://bucket-test/src/test3.txt
  ```
  
- 上传本地file1文件至bucket-test桶下，且上传过程中失败，断点续传，命令如下：
  ```
  ./obsutil cp /file1  obs://bucket-test/file -f
  ```
  上传失败。结果如下：
  ```
  ./obsutil cp /file1 obs://bucket-test/file -f
  Parallel:      3                   Jobs:          3
  Threshold:     524288000           PartSize:      5242880
  VerifyLength:  false               VerifyMd5:     false
  CheckpointDir: xxxx
  [=================================__________________] 66.08% ?/s 3.35GB/4.88GB ?
  ```
  再次执行同上命令断点续传。结果如下：
  ```
  obsutil cp /file1 obs://bucket-test/file -f
  ```
  ```
  Parallel:      3                   Jobs:          3
  Threshold:     524288000           PartSize:      5242880
  VerifyLength:  false               VerifyMd5:     false
  CheckpointDir: xxxx
  [====================================================] 100% 307.42MB/s 4.88GB/4.88GB 5.308s
  Upload successfully, 4.88GB, n/a, /file1 --> obs://bucket-test/file, cost [6325], status [200], request id [xxxxx]
  ```
  
- 增量上传本地src1文件夹下的所有文件和文件夹至bucket-test桶的src目录，命令如下：
  ```
  ./obsutil cp /src1  obs://bucket-test/src -f -r -u
  ```
  上传成功4个对象，1个为新增对象，执行结果出现Skip count字样。
  ```
  ./obsutil cp /src1 obs://bucket-test/src -f -r -u
  ```
  ```
  Start at 2024-10-08 02:00:18.8906532 +0000 UTC
  Parallel:      5                   Jobs:          5
  Threshold:     50.00MB             PartSize:      auto
  VerifyLength:  false               VerifyMd5:     false
  CheckpointDir: xxxx
  Task id: 6a97974a-7929-4188-9736-fcd637d16584
  OutputDir: xxxx
  [====================================================] 100% tps:0.00 ?/s 2.09KB/2.09KB 5ms
  Succeed count:   4         Failed count:    0         Skip count:      3
  Succeed bytes:   2.09KB
  Metrics [max cost:6 ms, min cost:6 ms, average cost:1.50 ms, average tps:52.63, transferred size :2.09KB]
  ```
  
- 排除上传本地src1文件夹中src2及其包含的所有文件和文件夹，命令如下：
  ```
  ./obsutil cp /src1  obs://bucket-test/src -exclude "*src1/src2*" -f -r -mf
  ```
  上传成功5个对象，上传信息中包含Exclude及内容字样。
  ```
  ./obsutil cp /src1  obs://bucket-test/src -exclude "*src1/src2*" -f -r -mf
  Start at 2024-10-08 02:04:27.7752009 +0000 UTC
  Parallel:      5                   Jobs:          5
  Threshold:     50.00MB             PartSize:      auto
  VerifyLength:  false               VerifyMd5:     false
  Exclude:       *src1/src2*
  Include:
  CheckpointDir: xxxx
  OutputDir: xxxx
  [====================================================] 100.00% tps:35.82 ?/s 5/5 2.39KB/2.39KB 340ms
  Succeed count:   3         Failed count:    0
  Succeed bytes:   2.39KB
  Metrics [max cost:338 ms, min cost:91 ms, average cost:240.40 ms, average tps:14.62, transferred size:2.39KB]
  ```
  成功上传后，桶内生成对象为：
  ```
  obs://bucket-test/src/src1/
  obs://bucket-test/src/src1/src3/
  obs://bucket-test/src/src1/test3.txt
  ```
  
![](https://support.huaweicloud.com/utiltg-obs/public_sys-resources/note_3.0-zh-cn.png)
断点续传仅支持大文件，即：文件大小大于5GB或文件大小大于设置的threshold（默认50MB）。
