Skip to content

Commit dfc8a66

Browse files
committed
add docs for new added command
1 parent dbc0d64 commit dfc8a66

File tree

5 files changed

+229
-6
lines changed

5 files changed

+229
-6
lines changed

cmd/awsfetch.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,9 @@ func (lo *awslistOptions) Run(cmd *cobra.Command, positionalArgs []string) {
5353

5454
svc := s3.New(s3session)
5555
input := &s3.ListObjectsV2Input{
56-
Bucket: aws.String(awsBucket),
57-
Prefix: aws.String(lo.prefix),
58-
Delimiter: aws.String(lo.delimiter),
59-
MaxKeys: aws.Int64(lo.maxKeys),
56+
Bucket: aws.String(awsBucket),
57+
Prefix: aws.String(lo.prefix),
58+
MaxKeys: aws.Int64(lo.maxKeys),
6059
}
6160
if lo.ctoken != "" {
6261
input.ContinuationToken = aws.String(lo.ctoken)
@@ -78,6 +77,7 @@ func (lo *awslistOptions) Run(cmd *cobra.Command, positionalArgs []string) {
7877
// Message from an error.
7978
fmt.Fprintln(os.Stderr, err.Error())
8079
}
80+
fmt.Fprintln(os.Stderr, input.ContinuationToken)
8181
os.Exit(1)
8282
}
8383
for _, obj := range result.Contents {
@@ -166,6 +166,7 @@ func (o *awsfetchOptions) Run(cmd *cobra.Command, positionalArgs []string) {
166166
fmt.Fprintln(os.Stderr, err.Error())
167167
}
168168
close(itemc)
169+
fmt.Fprintln(os.Stderr, input.ContinuationToken)
169170
os.Exit(1)
170171
}
171172
for _, obj := range result.Contents {

docs/abfetch.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# 简介
2+
3+
`abfetch` 使用异步抓取接口抓取网络资源到七牛存储空间。
4+
5+
参考文档:[异步抓取 (async fetch)](https://developer.qiniu.com/kodo/api/4097/asynch-fetch)
6+
7+
# 格式
8+
9+
```
10+
qshell abfetch [-i <URLList>][-b <CallbackBody>][-T <CallbackHost>][-a <CallbackUrl>][-e <FailureList>][-t <DownloadHostHeader>][-g <StorageType>][-s <SuccessList>][-c <ThreadCount>] <Bucket>
11+
```
12+
13+
# 选项
14+
| 选项 | 说明 |
15+
| -i | 要抓取的资源列表, 一行一个资源 |
16+
| -b | 回调的http Body |
17+
| -T | 回调时的HOST 头 |
18+
| -a | 回调的请求地址 |
19+
| -e | 抓取失败导出的文件列表 |
20+
| -t | 下载资源时使用的HOST头 |
21+
| -g | 抓取的资源存储在七牛存储空间的类型, 分为低频存储, 标准存储 |
22+
| -s | 抓取成功后导出到的文件 |
23+
| -c | 抓取指定的线程数目 |
24+
25+
详细的选项介绍,请参考:[异步抓取 (async fetch)](https://developer.qiniu.com/kodo/api/4097/asynch-fetch)
26+
27+
28+
# 参数
29+
<Bucket> 为七牛存储空间名
30+
31+
32+
# 例子
33+
34+
假如我有3个资源要抓取,地址分别为:
35+
http://test.com/test1.txt
36+
http://test.com/test2.txt
37+
http://test.com/test3.txt
38+
39+
需要抓取这三个资源保存在七牛存储空间"test"中
40+
41+
第一步:
42+
43+
在当前目录下创建名为"urls.txt"的文件, 文件内容为
44+
45+
```
46+
http://test.com/test1.txt
47+
http://test.com/test2.txt
48+
http://test.com/test3.txt
49+
```
50+
每行一个地址 。
51+
52+
53+
第二步:
54+
55+
使用如下的命令就可以抓取资源到存储"test"中
56+
```
57+
$ qshell abfetch -i urls.txt test
58+
```
59+
60+
61+
但是这样我们不知道哪些成功了,哪些抓取失败了,可以使用选项-e 导出失败列表到文件"failure.txt"中:
62+
```
63+
$ qshell abfetch -i urls.txt -e failure.txt test
64+
```
65+
66+
67+
如果要提高请求的并发量, 可以使用选项-c 指定提交的线程数, 下面的命令指定线程数为100:
68+
```
69+
$ qshell abfetch -i urls.txt -e failure.txt -c 100 test
70+
```
71+
线程数只能决定请求接口后台服务器的快慢, 提交的请求会到服务器处理队列中, 如果队列中有很多要抓取的资源,抓取速度不一定会提高,所以适当设置线程数
72+
73+
# 文件大小
74+
75+
异步接口暂时没办法判断是否抓取成功, 当异步接口返回的数据wait是-1时,表示抓取过这个文件,这时程序会用stat接口去存储获取文件的信息,如果可以获取到,说明抓取成功了;如果wait为-1, 重试三次stat都失败,那么认为抓取失败。
76+
77+
获取异步接口的返回结果是通过轮训进行的, 每次轮训的时间间隔取决于文件的大小, 大的文件时间间隔长点,小的文件时间间隔短点。
78+
因此可以在抓取的资源文件后面附上文件大小来帮助程序估算大概的时间间隔。
79+
80+
比如要抓取的资源地址为:
81+
http://test.com/test1.txt
82+
http://test.com/test2.txt
83+
http://test.com/test3.txt
84+
85+
test1.txt 大小为400字节
86+
test2.txt 大小为300340字节
87+
test3.txt 大小为22039字节
88+
89+
假如把这些信息保存在"fetch_input.txt"文件中, 文件内容格式为:
90+
http://test.com/test1.txt 400
91+
http://test.com/test2.txt 300340
92+
http://test.com/test3.txt 22039
93+
94+
程序会根据文件大小估算异步抓取的时间,时间到后,会访问异步结果获得处理结果。如果没有指定文件大小,默认会有轮训时间。

docs/awsfetch.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# 简介
2+
3+
`awsfetch` 迁移亚马逊存储空间的数据到七牛存储空间。 该命令需要用到亚马逊账户的AccessKeyID和SecretKey, 创建访问密钥可以参考:[创建密钥](https://docs.aws.amazon.com/zh_cn/general/latest/gr/managing-aws-access-keys.html)
4+
5+
该命令使用了七牛的fetch接口进行抓取, 需要可以公共可以直接访问的网络资源链接, 因此在需要亚马逊存储开启公共可访问, 公共可访问开启: [文档](https://aws.amazon.com/cn/premiumsupport/knowledge-center/read-access-objects-s3-bucket/)
6+
7+
因为该命令使用了七牛fetch接口,对于较大的资源(大于100M), 有抓取超时的可能性。
8+
9+
该命令首先使用亚马逊的List Objects V2接口[文档](https://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html), 获取空间中的文件, 然后七牛的fetch接口[文档](https://developer.qiniu.com/kodo/api/1263/fetch)进行抓取。
10+
11+
# 格式
12+
13+
```
14+
qshell awsfetch [-p <Prefix>][-n <maxKeys>][-m <ContinuationToken>][-c <threadCount>][-u <QiniuUpHost>] -S <AwsSecretKey> -A <AwsID> [-s <SuccessList>][-e <FailureList>] <AwsBucket> <AwsRegion> <QiniuBucket>
15+
```
16+
17+
# 帮助文档
18+
19+
可以在命令行输入如下命令获取帮助文档:
20+
```
21+
$ qshell awsfetch -h
22+
```
23+
24+
# 选项
25+
26+
| 选项 | 说明 | 可选 |
27+
| -A | 亚马逊账户的Access Key ID | N |
28+
| -S | 亚马逊账户的Secret Key | N |
29+
| -p | 亚马逊存储空间要抓取资源的前缀 | Y |
30+
| -n | 亚马逊接口每次返回的数据条目数量 | Y |
31+
| -m | 亚马逊接口数据每次会返回的token, 用于下次列举 | Y |
32+
| -c | 抓取的线程数, 默认为20 | Y |
33+
| -u | 抓取的资源上传到七牛存储时的上传HOST | Y |
34+
| -s | 抓取成功的文件导出列表 | Y |
35+
| -e | 抓取失败的文件导出列表 | Y |
36+
37+
38+
# 参数
39+
<AwsBucket> 亚马逊存储空间名称
40+
<AwsRegion> 亚马逊账户所在的地区
41+
<QiniuBucket> 七牛存储空间名称
42+
43+
44+
# 亚马逊存储数据迁移到七牛存储
45+
46+
使用场景:
47+
迁移亚马逊存储空间到七牛存储空间。
48+
49+
假如要迁移的亚马逊账户的Access Key ID, SecretKey为:
50+
AWS_ACCESS_KEY_ID = "12345"
51+
AWS_SECRET_KEY = "6789"
52+
53+
亚马逊存储空间名为:
54+
AWS_BUCKET = "aws-bucket"
55+
56+
账户所在地区为:
57+
AWS_REGION = "us-west-2"
58+
59+
七牛存储空间名为:
60+
QINIU_BUCKET = "qiniu-bucket"
61+
62+
导出失败的文件列表到"failure.txt"
63+
64+
可以使用如下命令进行迁移:
65+
```
66+
$ qshell awsfetch -A 12345 -S 6789 -e failure.txt aws-bucket us-west-2 qiniu-bucket
67+
```

docs/awslist.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# 简介
2+
3+
`awslist` 使用亚马逊的List Objects V2接口[文档](https://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html), 获取空间中的文件, 打印到标准输出。
4+
5+
该命令的数据格式为:
6+
<文件名>\t<文件大小>\t<Etag>\t<最后修改时间>
7+
8+
当程序列举的过程中遇到错误,比如网络断开等, 会把当前的ContinuationToken打印到标准错误输出上, 可以使用shell重定向把标准输出到一个文件, 准出错误输出到另一个文件,这样可以方便地找到continuationToken继续列举。
9+
10+
# 格式
11+
12+
```
13+
qshell awslist [-p <Prefix>][-n <maxKeys>][-m <ContinuationToken>] -S <AwsSecretKey> -A <AwsID> <AwsBucket> <AwsRegion>
14+
```
15+
16+
# 帮助文档
17+
18+
可以在命令行输入如下命令获取帮助文档:
19+
```
20+
$ qshell awslist -h
21+
```
22+
23+
# 选项
24+
25+
| 选项 | 说明 | 可选 |
26+
| -A | 亚马逊账户的Access Key ID | N |
27+
| -S | 亚马逊账户的Secret Key | N |
28+
| -p | 亚马逊存储空间要抓取资源的前缀 | Y |
29+
| -n | 亚马逊接口每次返回的数据条目数量 | Y |
30+
| -m | 亚马逊接口数据每次会返回的token, 用于下次列举 | Y |
31+
32+
33+
# 参数
34+
<AwsBucket> 亚马逊存储空间名称
35+
<AwsRegion> 亚马逊账户所在的地区
36+
37+
38+
# 列举
39+
40+
使用场景:
41+
列举亚马逊存储空间中所有的文件
42+
43+
假如要迁移的亚马逊账户的Access Key ID, SecretKey为:
44+
AWS_ACCESS_KEY_ID = "12345"
45+
AWS_SECRET_KEY = "6789"
46+
47+
亚马逊存储空间名为:
48+
AWS_BUCKET = "aws-bucket"
49+
50+
账户所在地区为:
51+
AWS_REGION = "us-west-2"
52+
53+
可以使用如下命令进行列举:
54+
```
55+
$ qshell awsfetch -A 12345 -S 6789 aws-bucket us-west-2
56+
```

docs/listbucket2.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Key\tSize\tHash\tPutTime\tMimeType\tFileType\tEndUser
1515
# 格式
1616

1717
```
18-
qshell listbucket2 [--prefix <Prefix> | --suffixes <suffixes1,suffixes2>] [--start <StartDate>] [--max-retry <RetryCount>][--end <EndDate>] <Bucket> [--readable] [ [-a] -o <ListBucketResultFile>]
18+
qshell listbucket2 [-m|--marker <Marker>][--prefix <Prefix> | --suffixes <suffixes1,suffixes2>] [--start <StartDate>] [--max-retry <RetryCount>][--end <EndDate>] <Bucket> [--readable] [ [-a] -o <ListBucketResultFile>]
1919
```
2020

2121
# 鉴权
@@ -36,6 +36,7 @@ qshell listbucket2 [--prefix <Prefix> | --suffixes <suffixes1,suffixes2>] [--sta
3636
| suffixes | 列举整个空间文件, 然后从中筛选出文件后缀为在[suffixes1, suffixes2, ...]中的文件 | Y |
3737
| a | 开启选项o 的append模式, 如果本地保存文件列表的文件已经存在,如果希望像该文件添加内容,使用该选项, 必须和-o选项一起使用 | Y |
3838
| readable | 开启文件大小的可读性选项, 会以合适的KB, MB, GB等显示 | Y |
39+
|marker| Y| marker标记列举过程中的位置, 如果列举的过程中网络断开,会返回一个marker, 可以指定该marker参数继续列举|
3940

4041

4142
# 常用使用场景介绍
@@ -77,7 +78,6 @@ qshell listbucket2 [--prefix <Prefix>] <Bucket> -o <ListBucketResultFile>
7778

7879
注意startDate 和 endDate 是这种半开半闭区间[startDate, endDate)
7980

80-
8181
(7) 获取后缀为mp4, html的文件
8282

8383
```
@@ -90,6 +90,11 @@ qshell listbucket2 [--prefix <Prefix>] <Bucket> -o <ListBucketResultFile>
9090
qshell listbucket2 -r <Bucket>
9191
```
9292

93+
(9) marker的使用; 假如要列举的bucket名字为"test-marker", marker为"eyJjIjowLCJrIjoiMDkzOWM1ODU4ZmI1NGZiNzk3NTJmNjVkN2U4MWY4MmVfMTUzNTM3NzI2MDMxNV8xNTM1MzgwMjYyNDYxXzgzMjgyODAzOC0wMDAwMS5tcDQifQ=", 如果要接着这个marker位置继续列举,可以使用如下命令
94+
```
95+
$ qshell listbucket2 -m eyJjIjowLCJrIjoiMDkzOWM1ODU4ZmI1NGZiNzk3NTJmNjVkN2U4MWY4MmVfMTUzNTM3NzI2MDMxNV8xNTM1MzgwMjYyNDYxXzgzMjgyODAzOC0wMDAwMS5tcDQifQ= test-marker
96+
```
97+
9398

9499
# 示例
95100

0 commit comments

Comments
 (0)