七牛的云存储里有一个 18G 的文件,下载报错,七牛客服提供了多种技术方案,搞了一周,依旧下载不下来。现在又让我从第一个方案开始从头体验一遍“七牛测试工程师”了

2019-01-15 17:03:33 +08:00
 jackon

关于要不要发这篇文章,纠结了很久。既然写了,还是发出来吧。

通过朋友把问题反馈给了对应的团队,客服刚刚也打电话给我解释具体问题了。 处理的蛮好的。

听朋友讲过许式伟早期创业的一些故事,蛮佩服的。 这或许也是我成为七牛忠实用户的主要原因之一吧。

前不久,换了其他云存储。有点不舍得。

希望七牛团队可以保持优秀,甚至再搞点牛逼的技术产品出来。


直接贴沟通记录了,有点长。

下载同一个 bucket 下的小文件,成功。

下载大文件,失败,

$ wget http://data.xxx.me/xxx.bson.tar

--2019-01-07 17:57:41--  http://data.xxx.me/xxx.bson.tar

Resolving data.xxx.me... 58.xxx.xxx.29

Connecting to data.xxx.me|58.xxx.xxx.29|:80... connected.

HTTP request sent, awaiting response... 403 Forbidden

2019-01-07 17:57:42 ERROR 403: Forbidden.

收到回复

您好,

文件过大可能会由于网络波动等原因造成下载失败,

建议您使用 qshell 工具进行下载:

https://developer.qiniu.com/kodo/tools/1302/qshell ;

https://github.com/qiniu/qshell/blob/master/docs/get.md

报错是 403 Forbidden,必现。客服却解释为网络波动等原因。 不过,只要能解决问题就行了。可能客服也不懂技术,不难为他们了。

看 qshell 工具文档,没找到断点续传的功能。公网传输 18G 文件,还不能断点续传。 自研工具相对于 wget 的优势是什么?

试了一下,不报 403 了。看来还是有点厉害的。

下载了一周,根本无法完整下载。最大的两次,下载了 10G。 关键是,下载不完整,根本没有报错。 自己检查文件大小才发现的错误。

自研工具的优势,大概就是绕过检测,出错不报错。假装成功。

猜测,七牛大概是出于防 DDOS /流量攻击等的考虑,限制了单个请求的最大传输流量。wget 的时候,服务器先检测文件大小,所以返回 403. 自研的工具,绕过了前面的检测,但传输到一定量的时候,可能是 bug,也可能是触发了安全机制,传输会中断在 10G 流量左右。推测,从七牛上不可能完整下载大于 10G 的单个文件。

对于七牛客服给的坑爹解决方案,我是很生气的。

qshell 下载,由断点续传的功能么?下载了几天了,没有一次下载完整的。最多只能一次下载 10G

体验太差了。

客服让我用 qshell 工具的 qdownload

qshell 工具的 qdownload 命令是支持单个文件断点续传的,qdownload 使用文档如下:

https://github.com/qiniu/qshell/blob/master/docs/qdownload.md

你尝试按照文档要求的搁置配置参数进行下载。文档中提到的下载配置文件 <LocalDownloadConfig> 是需要您自己创建并设置的。

根据文档搞好了配置文件,下载报错 403,我误以为是配置不对导致 URL 中的 '/' 存在转义问题。

贴了完整的配置文件和日志给客服。

Download xxx.bson.tar failed by url http://data.xxx.me/xxx%2Fxxx.bson.tar?e=155003xxxxxxxNo8SfwGM= 403 Forbidden

怎么避免 url 中的 / 被转义?

$ cat config.json
{
    "dest_dir"   :   "/Users/xxx/Downloads/qshell-v2.3.5/data",
    "bucket"     :   "big-data",
    "prefix"     :   "xxx%2Fxxx.bson",
    "suffixes"   :   ".tar",
    "cdn_domain" :   "http://data.xxx.me",
    "referer"    :   "",
    "log_file"   :   "download.log",
    "log_level"  :   "info",
    "log_rotate" :   1,
    "log_stdout" :   false
}

客服竟然真的指出我 prefix 字段配置的 '/' 不对:

核对下前缀 prefix 的正确格式。

文档中前缀格式是以 / 结尾的:

xxx (认真的文档截图)

另外,您仔细确认下前缀的概念:

你想设置的前缀,正确格式可能要在最后加个斜线 /

翻译成普通话大概就是,你这个用户不行,文档里虽然没写,但例子中的前缀以 '/' 结尾,你竟然配成了一个文件的 basename。

于是,我挑了一大一小 2 个文件,加了 'sync/' 前缀,努力做一个正确的用户。

小文件下载成功,大文件依旧报错 403.

很明显:

  1. qdownload 跟 wget 一样,无法下载 18G 的文件。
  2. 目测,qdownload 的设计初衷是同步一个目录,客服所谓的断点续传,大概是已经下载过的文件不会重复下载。
  3. 如果 qdownload 支持同一个文件的断点续传,get 命令没道理阉割掉。
  4. get 可以下载,只是不完整。qdownload 直接报 403,也是一个谜。可能背后是两套实现机制。

我问客服:

我只需要下载一个文件,怎么配?

客服说:

下载单个文件使用 get 命令即可:

https://github.com/qiniu/qshell/blob/master/docs/get.md

例如:

qshell get <Bucket> <Key> [-o <OutFile>]


其中,

bucket 写资源所在的空间名;

key 写资源在七牛空间的名字

-o <Outfile> 可选项,是下载后保存在本地的名字。

回复的很认真,但是,绕回到老方案上,就尴尬了。

你先看看这个工单的历史记录再回复。

不知道我的理解能力太差,还是你们的产品/文档有问题,

从云存储下载一个大文件,竟然前前后后搞了一个星期了,又回到了原点。

请提供一个你们测试过并且确认可用的解决方案。

然后收到客服的回复, 他们真的就去下载我的文件做测试了。。。

很多人可能猜到了,我已经加了 'sync/' 前缀测试 qdownload 命令了。 原来的 URL 访问,肯定 404.

赶紧回复:

请不要用我的文件做测试,这是内部数据。

客服又跟我确认,那个文件还在不在,我回复,文件已删除。

客服回复:

您好,

如果文件已经删除,是无法下载的。

如果是正常存储在七牛,没有被删除的文件,您可以使用 qshell 的 get 命令下载该文件.

https://github.com/qiniu/qshell/blob/master/docs/get.md

内伤,聊不动了。

6014 次点击
所在节点    程序员
31 条回复
iyaozhen
2019-01-15 21:57:05 +08:00
@chaosjohn 666 还有这操作
uyhyygyug1234
2019-01-15 22:04:28 +08:00
有 ssh 用 rsync,可以续传,或者开个 ftp。。啥的都可以,而且 18G 不大啊
azh7138m
2019-01-16 00:30:09 +08:00
@uyhyygyug1234 qshell 是个 cli 工具,ssh 是啥玩意。
楼主是七牛上面的文件下不回来了。

七牛从网宿换到昆仑之后,我感觉我加载东西经常出问题,可同事的 osx 就没问题( linux 用户的心都碎了)
heww
2019-01-16 09:09:39 +08:00
别提了,我在 onedrive 中的一个 7G 大小的文件现在也下载不下来。
opengps
2019-01-16 09:56:13 +08:00
我在乐视云存了一个 500 多 G 的文件,后来乐视云关门了。。。
night98
2019-01-16 11:19:58 +08:00
十分怀疑是 timeout 的问题,哈哈
nvhanzhi
2019-01-16 15:03:06 +08:00
我在七牛有 100 多 G 的文件,想改低频存储,七牛竟然不支持 bucket 一键转存储类型。。。不能一键导出下载链接。。 收回测试域名。。。呵呵 这垃圾公司
my3157
2019-01-16 16:28:25 +08:00
// 前段时间帮助客户吧一个 11T 的文件上传到对象存储, so easy
pasca
2019-01-16 16:36:43 +08:00
10T 以下可自己传 ,10T 左右可以联系客服寄硬盘给七牛吧!

另外,好奇这么大的文件是啥,哈哈,想以前单机游戏时代,经常 40G 左右的安装包那叫一个愁啊,放百度网盘慢的一匹,当时也是放在七牛,就是,,,,,,,,,不是免费让我很伤。
MartinWu
2019-01-16 17:59:17 +08:00
淡定,天下客服一个样。不要憋到内伤就好。我之前跟阿里云的客服沟通也试过被类似逻辑憋到内网,后面让他找个工程师跟我沟通才算把问题搞清楚。顺便帮阿里云 debug 了下。
MartinWu
2019-01-16 18:00:22 +08:00
@MartinWu #30 是内伤。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/527297

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX