最近使用Google Cloud服务器跑算法,需要传大量数据上去。因为自身电脑网速较慢以及需要*等因素,使用scp的方法上传很慢。因此想到通过云盘做中介,在服务器上使用命令的方式下载文件,既不需要*也可以充分利用服务器带宽的优势(千兆网络)。
wget【无效】
网上搜了一下普遍使用的方式为:
wget -c --referer=http://pan.baidu.com/s/1hq04k1e -O testfile.PNG "http://nb.baidupcs.com/file/6a0a41574d8603ff04786b046da3e361?...........testfile.PNG"
来自:https://blog.****.net/Boycy/article/details/41210981
我用了一下直接报403 Forbidden,尝试了添加其他参数也无济于事,只能放弃。
curl
经过大神的指示,使用curl可以完美解决,方案如下。
首先获取百度(360)云盘的分享链接,用Firefox浏览器打开,并按Ctrl+Shift+E打开请求查看工具,然后点击下载,再点击弹出的下载框的取消按钮。
这时候应该可以在工具中找到一个302的请求,然后根据该请求的类型找到同类型的200请求(我这里是octet-stream),右键复制为curl。
在terminal中粘贴,并在最后加一个> a,a表示保存的文件名,就可以下载了。
一个问题
因为我是在服务器上下载文件,输入上一步的命令,发现得到的文件大小不正常。
可以看到和上一张图一样的命令,得到的大小却只有78字节。这个问题还没有解决,不过只存在于百度网盘的情况,使用360网盘没有这个问题。
这是360的图:
相比scp 100k/s的速度,使用云盘中介显然高效很多,尤其是需要经常传输大文件的情况。如果有其他更方便的传输方法请留言告诉我一下。