使用bypy直接下载百度网盘数据到服务器?

问题描述

客户一个测序原始数据在百度网盘上待分析。一般思路是下载到本地,再转移到服务器。但这样相当于数据转移两次,如果客户不给你账号密码,可能还得转移三次。而百度网盘这尿性,下载会很慢很慢。

解决方案

网上查了下,百度网盘提供了一个开放的api,使用服务器的命令行即可直接下载数据。

pip install bypy

第一次使用的时候,因为需要注册访问百度网盘api,所以随便输入一个bypy命令,如:bypy info
image.png
这时会命令行返回一个网址,打开此网址,登录百度网盘之后,得到验证码。(客户提供即可)
image.png
返回命令行输入此验证码,即可使bypy得到百度网盘api使用权限,接下来就可以使用bypy管理百度网盘文件的上传下载了。
image.png
程序会利用不同的服务器进行认证,认证成功会显示百度网盘的容量,如果一次没成功,可以多试几次。认证成功后,会显示百度网盘空间的大小。

执行 bypy 或者 bypy help。

$ bypy
usage: bypy [-h] [-V] [-d] [-v] [-r RETRY] [-q] [-t TIMEOUT] [-s SLICE] [--chunk CHUNK]
            [-e] [-f] [--no-resume-download] [--include-regex INCREGEX] [--on-dup ONDUP]
            [--no-symlink] [--disable-ssl-check] [--cacerts CACERTS] [--mirror MIRROR]
            [--select-fastest-mirror] [--rapid-upload-only]
            [--resume-download-revert-back RCOUNT] [--move] [--processes PROCESSES]
            [--downloader DOWNLOADER] [--downloader-arguments DOWNLOADER_ARGS]
            [--config-dir CONFIGDIR] [-c]
            [command ...]

bypy v1.7.12 - Python client for Baidu Yun (Personal Cloud Storage) 百度云/百度网盘 Python 客户端

注意数据存放在百度网盘的位置

数据需要放在百度网盘一级目录下的apps文件夹,有的可能是“我的应用数据”,我试图新建或修改文件名为apps,显示失败。所以这时“apps”就是“我的应用数据”,比如:
image.png

bypy list 显示百度网盘 /apps(我的应用数据)/bypy 目录下的所有文件。

$ bypy list
/apps/bypy ($t $f $s $m $d):
D RNA-seq OE,Crispr 0 2022-08-12, 16:40:46

$ bypy list RNA-seq\ OE,Crispr/
/apps/bypy/RNA-seq OE,Crispr ($t $f $s $m $d):
D 1.rawdata 0 2022-08-12, 16:40:46
F Report-P101SC18081936-01-J024-B24-21.zip 2002206 2022-08-12, 16:40:46 dbe71e6b7rdd9b9b982a761e93856ae4

$ bypy list RNA-seq\ OE,Crispr/1.rawdata/
/apps/bypy/RNA-seq OE,Crispr/1.rawdata ($t $f $s $m $d):
D C01-1_FRAS210125923-2r 0 2022-08-12, 16:40:46
D C01-2_FRAS210125926-2r 0 2022-08-12, 16:40:46
D C01-3_FRAS210125929-2r 0 2022-08-12, 16:40:46
D mir529-1_FRAS210125925-2r 0 2022-08-12, 16:40:46
D mir529-2_FRAS210125928-2r 0 2022-08-12, 16:40:46
D mir529-3_FRAS210125931-2r 0 2022-08-12, 16:40:46
D OE529-1_FRAS210125924-2r 0 2022-08-12, 16:40:46
D OE529-2_FRAS210125927-2r 0 2022-08-12, 16:40:46
D OE529-3_FRAS210125930-2r 0 2022-08-12, 16:40:46
F checkSize.xls 1604 2022-08-12, 16:40:46 b54e69664u9cbae3a82280c1d096d728

$ bypy list RNA-seq\ OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r
/apps/bypy/RNA-seq OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r ($t $f $s $m $d):
F C01-1_FRAS210125923-2r_1.fq.gz 973524936 2022-08-12, 16:40:46 c35112b4ev1742a0fa870a6406cc3433
F C01-1_FRAS210125923-2r_2.fq.gz 967398012 2022-08-12, 16:40:46 033bd3c38u1630cdbb2ef65d526aa805
F MD5.txt 130 2022-08-12, 16:40:46 303bc7473oc805779418f37abf511c57

下载

上传或者下载百度网盘数据:

## 上传
bypy upload [localpath] [remotepath] [ondup] 
或 bypy syncup [localdir] [remotedir] [deleteremote] 上传文件到百度网盘

## 下载
bypy downfile <remotefile> [localpath] 从百度网盘下载单个文件
bypy downdir [remotedir] [localdir] 从百度网盘下载整个文件夹

不加路径时,则上传/下载当前目录。

特别注意目录的表示方法,只需要写上bypy后的路径即可。

错误的表示方法:

$ bypy downfile 我的网盘/我的应用数据/bypy/RNA-seq\ OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
<I> [16:54:02] OE529-3_FRAS210125930-2r_1.fq.gz <- /apps/bypy/我的网盘/我的应用数据/bypy/RNA-seq OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
<E> [16:54:03] ----------------------------------------------------------------
Error 31066

正确的表示方法:

$ bypy downfile RNA-seq\ OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
<I> [16:54:53] OE529-3_FRAS210125930-2r_1.fq.gz <- /apps/bypy/RNA-seq OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
[____________________] 1% (20.0MB/1021.0MB)

如果不需要并行下载,可以选择当前目录直接下载:

$ bypy downdir
<I> [16:48:54] RNA-seq OE,Crispr/Report-P101SC18081936-01-J024-B24-21.zip <- /apps/bypy/RNA-seq OE,Crispr/Report-P101SC18081936-01-J024-B24-21.zip
[====================] 100% (1.9MB/1.9MB) ETA:  (116kB/s, 16s gone) <I> [16:49:12] RNA-seq OE,Crispr/1.rawdata/checkSize.xls <- /apps/bypy/RNA-seq OE,Crispr/1.rawdata/checkSize.xls
[====================] 100% (1.6kB/1.6kB) ETA:  (3kB/s,  gone) <I> [16:49:14] RNA-seq OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r/C01-1_FRAS210125923-2r_1.fq.gz <- /apps/bypy/RNA-seq OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r/C01-1_FRAS210125923-2r_1.fq.gz
[====================] 100% (928.4MB/928.4MB) ETA:  (648kB/s, 24m26s gone) <I> [17:13:41] RNA-seq OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r/C01-1_FRAS210125923-2r_2.fq.gz <- /apps/bypy/RNA-seq OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r/C01-1_FRAS210125923-2r_2.fq.gz
[====================] 100% (922.6MB/922.6MB) ETA:  (3MB/s, 5m15s gone) <I> [17:18:57] RNA-seq OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r/MD5.txt <- /apps/bypy/RNA-seq OE,Crispr/1.rawdata/C01-1_FRAS210125923-2r/MD5.txt

关于速度

bypy不会加速,要加速还是需要充会员才行。非会员很慢,上传稍微快点。

充值前(半天才1%):

$ bypy downfile RNA-seq\ OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
<I> [16:54:53] OE529-3_FRAS210125930-2r_1.fq.gz <- /apps/bypy/RNA-seq OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
[____________________] 1% (20.0MB/1021.0MB)  ^CSignal 2 received, Abort

充值后(5min左右完成一个fq下载):

$ bypy downfile RNA-seq\ OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
<I> [17:06:40] OE529-3_FRAS210125930-2r_1.fq.gz <- /apps/bypy/RNA-seq OE,Crispr/1.rawdata/OE529-3_FRAS210125930-2r/OE529-3_FRAS210125930-2r_1.fq.gz
<I> [17:06:41] Local and remote file size DOESN'T match
[====================] 100% (1021.0MB/1021.0MB) ETA:  (3MB/s, 5m23s gone)

参考:

posted @ 2022-08-12 17:48  生物信息与育种  阅读(3105)  评论(1编辑  收藏  举报