七牛的云存储里有一个 18G 的文件,下载报错,七牛客服提供了多种技术方案,搞了一周,依旧下载不下来。现在又让我从第一个方案开始从头体验一遍“七牛测试工程师”了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jackon
V2EX    程序员

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

  •  
  •   jackon
    JackonYang 2019-01-15 17:03:33 +08:00 6509 次点击
    这是一个创建于 2468 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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


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

    下载同一个 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 

    内伤,聊不动了。

    31 条回复    2019-01-16 18:00:22 +08:00
    xnode
        1
    xnode  
       2019-01-15 17:09:27 +08:00
    ......
    F281M6Dh8DXpD1g2
        2
    F281M6Dh8DXpD1g2  
       2019-01-15 17:14:35 +08:00   4
    国内做云的都是菜鸡
    LGA1150
        3
    LGA1150  
       2019-01-15 17:15:57 +08:00 via Android
    kakudesu
        4
    kakudesu  
       2019-01-15 17:24:48 +08:00
    2333
    52coder
        5
    52coder  
       2019-01-15 17:26:33 +08:00   1
    之前用七牛做免费图床,帮他们推荐了 20 多个人注册,后面测试域名突然收回,图片还下载不下来,最后用了那个命令行工具,写了个 shell 脚本,七牛是真的坑。
    GDC
        6
    GDC  
       2019-01-15 17:31:17 +08:00 via iPhone
    令人捉急… 这逻辑太沙雕了
    niuer
        7
    niuer  
       2019-01-15 17:38:01 +08:00
    您好:关于您的问题,首先这边表示抱歉没有定位您的需求。七牛这边是支持断点续下载的,用 wget -c -t 0 即可;再次对给您造成的困扰表示抱歉。
    niceworld
        8
    niceworld  
       2019-01-15 17:40:04 +08:00
    测试域名每日限流 10g 的原因?
    misaka19000
        9
    misaka19000  
       2019-01-15 17:42:39 +08:00
    @niuer #7 wget 不是 403 了吗
    saluton
        10
    saluton  
       2019-01-15 17:57:27 +08:00
    @misaka19000 233333
    ioven
        11
    ioven  
       2019-01-15 18:02:54 +08:00
    瞎猜

    wget 用 qshell 的 useragent 能不能绕过检测?
    zeraba
        12
    zeraba  
       2019-01-15 18:38:29 +08:00 via Android
    https://developer.qiniu.com/fusion/kb/1319/test-domain-access-restriction-rules
    测试域名每日限制 10G
    可以绑定一个自己的域名解决呗? 这个 403 不太友好,应该可以用 lua 返回一句友好提示
    zeraba
        13
    zeraba  
       2019-01-15 18:46:29 +08:00 via Android
    @niuer 他下载小文件没有问题,大文件出现了问题,如果是网络波动不会是 403,应该是直接连接断开了,再结合你们的文档测试域名的每日 10G 流量限制和他描述的最大只能下载 10G 应该可以定位问题了?
    dapang1221
        14
    dapang1221  
       2019-01-15 19:13:04 +08:00   1
    笑死我了,从根源解决问题,下载不动怎么办,让用户把文件删了就行了
    V2exUser
        15
    V2exUser  
       2019-01-15 19:18:26 +08:00 via Android
    换个 win 系统试试
    zsan6
        16
    zsan6  
       2019-01-15 19:26:51 +08:00   1
    就凭他的测试域名的坑,就得被人骂死。。。LESE
    Mohanson
        17
    Mohanson  
       2019-01-15 19:54:55 +08:00 via Android   1
    重启下电脑
    xiangyuecn
        18
    xiangyuecn  
       2019-01-15 20:27:02 +08:00
    挺好奇把这十几 G 的单个文件传上去的动机。。。不知道七牛有没有这种:寄堆硬盘过去把我的数据拷出来的服务
    pathbox
        19
    pathbox  
       2019-01-15 21:04:20 +08:00 via iPhone
    也就是可以传的上去,但现在下不下来了额?
    chaosjohn
        20
    chaosjohn  
       2019-01-15 21:26:55 +08:00
    @xiangyuecn 有,当时我就是寄了两块 8T 的盘到七牛的
    iyaozhen
        21
    iyaozhen  
       2019-01-15 21:57:05 +08:00 via Android
    @chaosjohn 666 还有这操作
    uyhyygyug1234
        22
    uyhyygyug1234  
       2019-01-15 22:04:28 +08:00
    有 ssh 用 rsync,可以续传,或者开个 ftp。。啥的都可以,而且 18G 不大啊
    azh7138m
        23
    azh7138m  
       2019-01-16 00:30:09 +08:00 via Android
    @uyhyygyug1234 qshell 是个 cli 工具,ssh 是啥玩意。
    楼主是七牛上面的文件下不回来了。

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

    另外,好奇这么大的文件是啥,哈哈,想以前单机游戏时代,经常 40G 左右的安装包那叫一个愁啊,放百度网盘慢的一匹,当时也是放在七牛,就是,,,,,,,,,不是免费让我很伤。
    MartinWu
        30
    MartinWu  
       2019-01-16 17:59:17 +08:00
    淡定,天下客服一个样。不要憋到内伤就好。我之前跟阿里云的客服沟通也试过被类似逻辑憋到内网,后面让他找个工程师跟我沟通才算把问题搞清楚。顺便帮阿里云 debug 了下。
    MartinWu
        31
    MartinWu  
       2019-01-16 18:00:22 +08:00
    @MartinWu #30 是内伤。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2692 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 14:11 PVG 22:11 LAX 07:11 JFK 10:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86