百度网盘有免费的 2TB 存储空间,而且有百度做靠山,不怕数据丢失,安全可靠。比较喜欢 bypy 的方式,使用简单,方便,对于备份一些小数据到云盘还是很方便的。下边简单的总结一下如何使用 bypy 实现百度网盘数据的同步。
这是一个百度云的 Python 客户端,其主要目的和功能,就是为 Linux 使用者提供一种在命令行下,使用百度云盘中2T存储空间的方法。它提供文件列表、下载、上传、比较、向上同步、向下同步,等操作。

1.系统环境

Linux系统+Python2.7

2.安装软件工具

安装pip命令,通过pip安装bypy,bypy依赖于requests

[root@bypy ~]# yum install python-pip
[root@bypy ~]# pip install requests bypy -i https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python2.7/site-packages
Collecting bypy
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/08/c1/592603cde161cbabf98b360ca09f53730f86b5c281f2b402fd691144ea38/bypy-1.6.9-py2.py3-none-any.whl (237kB)
    100% |████████████████████████████████| 245kB 1.4MB/s 
Collecting multiprocess>=0.70.0 (from bypy)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/58/17/5151b6ac2ac9b6276d46c33369ff814b0901872b2a0871771252f02e9192/multiprocess-0.70.9.tar.gz (1.6MB)
    100% |████████████████████████████████| 1.6MB 524kB/s 
Collecting requests-toolbelt>=0.8.0 (from bypy)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/60/ef/7681134338fc097acef8d9b2f8abe0458e4d87559c689a8c306d0957ece5/requests_toolbelt-0.9.1-py2.py3-none-any.whl (54kB)
    100% |████████████████████████████████| 61kB 3.5MB/s 
Collecting dill>=0.3.1 (from multiprocess>=0.70.0->bypy)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c7/11/345f3173809cea7f1a193bfbf02403fff250a3360e0e118a1630985e547d/dill-0.3.1.1.tar.gz (151kB)
    100% |████████████████████████████████| 153kB 2.1MB/s 
Installing collected packages: dill, multiprocess, requests-toolbelt, bypy
  Running setup.py install for dill ... done
  Running setup.py install for multiprocess ... done
Successfully installed bypy-1.6.9 dill-0.3.1.1 multiprocess-0.70.9 requests-toolbelt-0.9.1
You are using pip version 8.1.2, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

3.授权登录

执行 bypy info,显示下边信息。认证通过后可以看到云盘大小所使用信息。

[root@bypy ~]# bypy info
Please visit:	# 访问下边这个连接,复制授权码
https://openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=q8WE4EpCsau1oS0MplgMKNBn
And authorize this app
Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done	# 提示在下边粘贴授权码
e073315d53ca423530ba98c799d67e32	# 粘贴页面中的授权码按Enter确认
Authorizing, please be patient, it may take upto 300 seconds...
Authorizing with the Heroku server ...
Successfully authorized
Quota: 5.007TB
Used: 2.240TB

根据提示,通过浏览器访问下边的https链接,如果此时百度网盘账号正在登陆,会出现长串授权码,复制。将授权码粘贴至代码中。
在这里插入图片描述

4.启动bypy可能会缺少的模块

如果出现以下提示,需要安装python-urllib3模块

[root@bypy ~]# bypy info
<E> [08:24:43] Something seems wrong with the urllib3 installation.
Quitting

安装python-urllib3和python-requests模块

[root@bypy ~]# yum install python-urllib3 python-requests

5.测试上传和同步本地文件到云盘

由于百度PCS API权限限制,程序只能存取百度云端/apps/bypy目录下面的文件和目录。我们可以通过命令查看目录下文件

[root@bypy ~]# bypy list
/apps/bypy ($t $f $s $m $d):

如果提示以下错误,没有关系,是因为百度云盘中“我的应用数据”目录中没有bypy目录

[root@bypy ~]# bypy list
<E> [09:00:47] ----------------------------------------------------------------
Error 31066

把本地当前目录下的文件同步到百度云盘:

[root@bypy ~]# bypy upload file.txt

把云盘上的文件同步到本地:

[root@bypy ~]# bypy downfile file.txt
[====================] 100% (0.0B/0.0B)

断开登录授权,重新登录。

[root@bypy ~]# bypy -c

6.查看bypy帮助列表

[root@bypy ~]# bypy help
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 [command ...]]

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

positional arguments:
  command               operations (quota, list, etc)

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  -d, --debug           set debugging level (-dd to increase debugging level,
                        -ddd to enable HTPP traffic debugging as well (very
                        talkative)) [default: 0]
  -v, --verbose         set verbosity level [default: 0]
  -r RETRY, --retry RETRY
                        number of retry attempts on network error [default: 5
                        times]
  -q, --quit-when-fail  quit when maximum number of retry failed [default:
                        False]
  -t TIMEOUT, --timeout TIMEOUT
                        network timeout in seconds [default: 300]
  -s SLICE, --slice SLICE
                        size of file upload slice (can use '1024', '2k',
                        '3MB', etc) [default: 20 MB]
  --chunk CHUNK         size of file download chunk (can use '1024', '2k',
                        '3MB', etc) [default: 20 MB]
  -e, --verify          verify upload / download [default : False]
  -f, --force-hash      force file MD5 / CRC32 calculation instead of using
                        cached value
  --no-resume-download  resume instead of restarting when downloading if local
                        file already exists [default: True]
  --include-regex INCREGEX
                        regular expression of files to include. if not
                        specified (default), everything is included. for
                        download, the regex applies to the remote files; for
                        upload, the regex applies to the local files. to
                        exclude files, think about your regex, some tips here:
                        https://stackoverflow.com/questions/406230/regular-
                        expression-to-match-string-not-containing-a-word
                        [default: ]
  --on-dup ONDUP        what to do when the same file / folder exists in the
                        destination: 'overwrite', 'skip', 'prompt' [default:
                        overwrite]
  --no-symlink          DON'T follow symbol links when uploading / syncing up
  --disable-ssl-check   DON'T verify host SSL cerificate
  --cacerts CACERTS     Specify the path for CA Bundle [default: None]
  --mirror MIRROR       Specify the PCS mirror (e.g. bj.baidupcs.com. Open 'ht
                        tps://pcs.baidu.com/rest/2.0/pcs/manage?method=listhos
                        t' to get the list) to use. [default: pcs.baidu.com]
  --select-fastest-mirror
                        Let the program run some tests and select the fastest
                        PCS mirror it detectes. [default: False]
  --rapid-upload-only   only upload large files that can be rapidly uploaded
  --resume-download-revert-back RCOUNT
                        Revert back at least RCOUNT download chunk(s) and
                        align to chunk boundary when resuming the download. A
                        negative value means NO reverts. [default: 1]
  --move                Delete source files/directories after
                        download/upload/syncdown/syncup is successful (This
                        will force verification of the files). [default:
                        False]
  --processes PROCESSES
                        Number of parallel processes. (Only applies to dir
                        sync/dl/ul). [default: 1]
  --downloader DOWNLOADER
                        downloader to use (use python if not specified). valid
                        values: [u'aria2'] [default: ]
  --downloader-arguments DOWNLOADER_ARGS
                        arguments for the downloader: normally, the string is
                        the arguments to be passed to the downloader. however,
                        when it begins with '@', it will be treated as the
                        name of file, whose contents will be used as the
                        downloader arguments (example: when specifying
                        '@args.txt', file contents of 'args.txt' will be used
                        as the downloader arguments, not the string
                        '@args.txt' itself). you can also use environment
                        variable 'DOWNLOADER_ARGUMENTS' to specify the
                        downloader arguments (the environment variable has
                        lower priority compared to this argument). default
                        values: {u'aria2': u'-c -k10M -x4 -s4 --file-
                        allocation=none'}
  --config-dir CONFIGDIR
                        specify the config path [default: /root/.bypy]
  -c, --clean           remove the token file (need re-auth) and upload
                        progress file, -cc: clean hash cache file as well

Commands:
restore <remotepath> - restore a file from the recycle bin
cdl_add <source_url> [save_path] [timeout] - add an offline (cloud) download task
cdl_addmon <source_url> [save_path] [timeout] - add an offline (cloud) download task and monitor the download progress
cdl_cancel <task_id>  - cancel an offline (cloud) download task
cdl_list - list offline (cloud) download tasks
cdl_query <task_ids>  - query existing offline (cloud) download tasks
cleancache - remove invalid entries from hash cache file
combine <remotefile> [localfile] [md5s] - try to create a file at PCS by combining slices, having MD5s specified
compare [remotedir] [localdir] - compare the remote directory with the local directory
copy/cp <from> <to> - copy a file / dir remotely at Baidu Yun
delete/remove/rm <remotepath> - delete a file / dir remotely at Baidu Yun
downdir [remotedir] [localdir] - download a remote directory (recursively)
downfile <remotefile> [localpath] - download a remote file.
download [remotepath] [localpath] - download a remote directory (recursively) / file
dumpcache - display file hash cache
list/ls [remotepath] [format] [sort] [order] - list the 'remotepath' directory at Baidu PCS
listrecycle [start] [limit] - list the recycle contents
meta <remotepath> [format] - get information of the given path (dir / file) at Baidu Yun.
mkdir <remotedir> - create a directory at Baidu Yun
move/mv/rename/ren <from> <to> - move a file / dir remotely at Baidu Yun
quota/info - displays the quota information
refreshtoken - refresh the access token
search <keyword> [remotepath] [recursive] - search for a file using keyword at Baidu Yun
stream <remotefile> <localpipe> [format] [chunk] - stream a video / audio file converted to M3U format at cloud side, to a pipe.
syncdown [remotedir] [localdir] [deletelocal] - sync down from the remote directory to the local directory
syncup [localdir] [remotedir] [deleteremote] - sync up from the local directory to the remote directory
upload [localpath] [remotepath] [ondup] - upload a file or directory (recursively)

7.使用bypy工具的一些感受

bypy工具在备份一些文件小的文件数据时还是很好用的,传输速度也还可以接受,可以在系统中设置定时备份,将一些关键数据备份至云盘中。在传输一些大文件时就表现的比较吃力的,主要是速度比较慢。bypy不能使用百度云会员的上传下载权限,可能有方法但是我没有找到,后续找到后进行更新。

Logo

更多推荐