V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jackon
V2EX  ›  程序员

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

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

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

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

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

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

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


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

    下载同一个 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
    ......
    liprais
        2
    liprais  
       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   ·   实用小工具   ·   5136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:57 · PVG 11:57 · LAX 19:57 · JFK 22:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.