From 497b93f4e43548b99c4ca1980a63c15bb7f82df4 Mon Sep 17 00:00:00 2001 From: yangsen Date: Wed, 8 Nov 2023 11:35:38 +0800 Subject: [PATCH] change qdownload / qdownload2 / get doc (#405) --- docs/get.md | 5 ++++- docs/qdownload.md | 7 +++---- docs/qdownload2.md | 5 +++-- iqshell/storage/object/download/downloader.go | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/get.md b/docs/get.md index 42be3487..35b5b359 100644 --- a/docs/get.md +++ b/docs/get.md @@ -23,9 +23,12 @@ $ qshell get --doc - Bucket:空间名。 【必选】 - Key:存储空间中的文件名字。 【必选】 +## 注: +1. 使用 bucket 绑定的源站域名和七牛源站域名下载资源,这部分下载产生的流量会生成存储源站下载流量的计费,请注意,这部分计费不在七牛 CDN 免费 10G 流量覆盖范围,具体域名使用参考:--domain 选项。 + # 选项 - -o/--outfile:保存在本地的文件路径;不指定,保存在当前文件夹,文件名使用存储空间中的名字【可选】 -- --domain:指定下载请求的域名,当指定了下载域名则仅使用此下载域名进行下载;默认为空,此时 qshell 下载使用域名的优先级:1.bucket 绑定的域名(qshell 内部查询,无需配置) 2. 源站域名(qshell 内部查询,无需配置),当优先级高的域名下载失败后会尝试使用优先级低的域名进行下载。【可选】 +- --domain:指定下载请求的域名,当指定了下载域名则仅使用此下载域名进行下载;默认为空,此时 qshell 下载使用域名的优先级:1.bucket 绑定的 CDN 域名(qshell 内部查询,无需配置) 2.bucket 绑定的源站域名(qshell 内部查询,无需配置) 3. 七牛源站域名(qshell 内部查询,无需配置),当优先级高的域名下载失败后会尝试使用优先级低的域名进行下载。【可选】 - --get-file-api: 当存储服务端支持 getfile 接口时才有效。【可选】 - --public:空间是否为公开空间;为 `true` 时为公有空间,公有空间下载时不会对下载 URL 进行签名,可以提升 CDN 域名性能,默认为 `false`(私有空间)【可选】 - --check-size: 下载后检测本地文件和服务端文件 size 的一致性。【可选】 diff --git a/docs/qdownload.md b/docs/qdownload.md index 1e91767c..8680a16e 100644 --- a/docs/qdownload.md +++ b/docs/qdownload.md @@ -2,12 +2,11 @@ `qdownload` 可以将七牛空间中的文件同步到本地磁盘中。支持只同步带特定前缀或者后缀的文件,也支持在本地备份路径不变的情况下进行增量同步。 需要额外指出的是,将文件同步到本地都是走的七牛存储源站的流量而不是 `CDN` 的流量,因为 `CDN` 通常情况下会认为大量的文件下载操作是非法访问从而进行限制。 -注: +## 注: +- 使用 bucket 绑定的源站域名和七牛源站域名下载资源,这部分下载产生的流量会生成存储源站下载流量的计费,请注意,这部分计费不在七牛 CDN 免费 10G 流量覆盖范围,具体域名使用参考配置:domain 。 - `Key` 中的 `/` 会被当做路径处理,也即任何以 `/` 结尾的 `Key` 均会被当做文件夹处理。 - 如果使用的是 CDN 域名,且 CDN 域名开启了图片优化中的图片自动瘦身功能时,下载文件的信息和七牛服务端记录的文件信息不一致,此时下载不要使用 --check-size 和 --check-hash 选项,否则下载会失败。 -### 注:【该功能默认需要计费,如果希望享受 10G 的免费流量,请自行将 domain 参数设置为 CDN 域名,如不设置,需支付源站流量费用,无法减免!!!】 - 本工具批量下载文件支持多文件并发下载,另外还支持单个文件的断点下载。除此之外,也可以支持指定前缀或者后缀的文件同步,注意这里的前缀只能指定一个,但是后缀可以指定多个,多个后缀直接使用英文的逗号(,)分隔。 # 格式 @@ -69,7 +68,7 @@ $ qshell qdownload --doc - save_path_handler:指定一个回调函数;在构建文件的保存路径时,优先使用此选项进行构建,如果不配置则使用 $dest_dir + $文件分割符 + $Key 方式进行构建。文档下面有常用场景实例。此函数通过 Go 语言的模板实现,函数验证使用 func 命令,具体语法可参考 func 命令说明,handler 使用方式下方有示例可供参考 【可选】 - check_size:下载后检测本地文件和服务端文件 size 的一致性,默认为 `false`。【可选】 - check_hash:是否验证 hash,如果开启可能会耗费较长时间,默认为 `false` 【可选】 -- domain:指定下载请求的域名,当指定了下载域名则仅使用此下载域名进行下载;默认为空,此时 qshell 下载使用域名的优先级:1.bucket 绑定的域名(qshell 内部查询,无需配置) 2. 源站域名(qshell 内部查询,无需配置),当优先级高的域名下载失败后会尝试使用优先级低的域名进行下载。【该功能默认需要计费,如果希望享受 10G 的免费流量,请自行配置此参数为 CDN 域名,如不配置,需支付源站流量费用,无法减免!!!】 【可选】 +- domain:指定下载请求的域名,当指定了下载域名则仅使用此下载域名进行下载;默认为空,此时 qshell 下载使用域名的优先级:1.bucket 绑定的 CDN 域名(qshell 内部查询,无需配置) 2.bucket 绑定的源站域名(qshell 内部查询,无需配置) 3. 七牛源站域名(qshell 内部查询,无需配置),当优先级高的域名下载失败后会尝试使用优先级低的域名进行下载。【可选】 - referer:如果下载请求域名配置了域名白名单防盗链,需要指定一个允许访问的 referer 地址;默认为空 【可选】 - public:空间是否为公开空间;为 `true` 时为公有空间,公有空间下载时不会对下载 URL 进行签名,可以提升 CDN 域名性能,默认为 `false`(私有空间)【可选】 - enable_slice: 是否开启切片下载,需要注意 `slice_file_size_threshold` 切片阈值选项的配置,只有开启切片下载,并且下载的文件大小大于切片阈值方会启动切片下载。默认不开启。【可选】 diff --git a/docs/qdownload2.md b/docs/qdownload2.md index 74050d3c..3a2a3bf1 100644 --- a/docs/qdownload2.md +++ b/docs/qdownload2.md @@ -1,10 +1,11 @@ # 简介 -`qdownload2` 功能和 `qdownload` 一致,不过 `qdownload2` 通过命令行的方式来指定各个需要的参数,例如: +`qdownload2` 功能和 `qdownload` 一致,选项也是一一对应,不过 `qdownload2` 通过命令行的方式来指定各个需要的参数,例如: ``` qshell qdownload2 --dest-dir=/home/jemy/temp --bucket=test ``` -注: +## 注: +- 使用 bucket 绑定的源站域名和七牛源站域名下载资源,这部分下载产生的流量会生成存储源站下载流量的计费,请注意,这部分计费不在七牛 CDN 免费 10G 流量覆盖范围,具体域名使用参考 qdownload 命令的同功能配置:domain 。 - `Key` 中的 `/` 会被当做路径处理,也即任何以 `/` 结尾的 `Key` 均会被当做文件夹处理。 - 如果使用的是 CDN 域名,且 CDN 域名开启了图片优化中的图片自动瘦身功能时,下载文件的信息和七牛服务端记录的文件信息不一致,此时下载不要使用 --check-size 和 --check-hash 选项,否则下载会失败。 diff --git a/iqshell/storage/object/download/downloader.go b/iqshell/storage/object/download/downloader.go index 759c88b3..107416f3 100644 --- a/iqshell/storage/object/download/downloader.go +++ b/iqshell/storage/object/download/downloader.go @@ -294,7 +294,7 @@ func downloadTempFileWithDownloader(dl downloader, fInfo *fileInfo, info *Downlo // 检查 fromBytes 和 fileSize,fromBytes 不能 > fileSize if info.RangeFromBytes > 0 { - if info.RangeFromBytes > info.FileSize || info.RangeFromBytes > info.RangeToBytes { + if info.RangeFromBytes > info.FileSize || (info.RangeFromBytes > info.RangeToBytes && info.RangeToBytes > 0) { errorDesc := "download, check fromBytes error: fromBytes bigger than file size, should remove temp file and retry." log.Warning(errorDesc) if e := fInfo.cleanTempFile(); e != nil {