github.com/fzfile/BaiduPCS-Go@v0.0.0-20200606205115-4408961cf336/README.md (about)

     1  # BaiduPCS-Go 百度网盘客户端
     2  
     3  [![Build status](https://ci.appveyor.com/api/projects/status/k7xot8s2pdncqx55?svg=true)](https://ci.appveyor.com/project/fzfile/baidupcs-go)
     4  [![GoDoc](https://godoc.org/github.com/iikira/BaiduPCS-Go?status.svg)](https://godoc.org/github.com/iikira/BaiduPCS-Go)
     5  
     6  仿 Linux shell 文件处理命令的百度网盘命令行客户端.
     7  
     8  This project was largely inspired by [GangZhuo/BaiduPCS](https://github.com/GangZhuo/BaiduPCS)
     9  
    10  ## 注意
    11  
    12  此文档只针对于最新的commit, 可能不适用于已发布的最新版本.
    13  
    14  <!-- toc -->
    15  ## 目录
    16  
    17  - [特色](#特色)
    18  - [编译/交叉编译 说明](#编译交叉编译-说明)
    19  - [下载/运行 说明](#下载运行-说明)
    20    * [Windows](#windows)
    21    * [Linux / macOS](#linux--macos)
    22    * [Android / iOS](#android--ios)
    23  - [命令列表及说明](#命令列表及说明)
    24    * [注意 ! ! !](#注意---)
    25    * [检测程序更新](#检测程序更新)
    26    * [登录百度帐号](#登录百度帐号)
    27    * [列出帐号列表](#列出帐号列表)
    28    * [获取当前帐号](#获取当前帐号)
    29    * [切换百度帐号](#切换百度帐号)
    30    * [退出百度帐号](#退出百度帐号)
    31    * [获取网盘配额](#获取网盘配额)
    32    * [切换工作目录](#切换工作目录)
    33    * [输出工作目录](#输出工作目录)
    34    * [列出目录](#列出目录)
    35    * [列出目录树形图](#列出目录树形图)
    36    * [获取文件/目录的元信息](#获取文件目录的元信息)
    37    * [搜索文件](#搜索文件)
    38    * [下载文件/目录](#下载文件目录)
    39    * [上传文件/目录](#上传文件目录)
    40    * [获取下载直链](#获取下载直链)
    41    * [手动秒传文件](#手动秒传文件)
    42    * [修复文件MD5](#修复文件MD5)
    43    * [获取本地文件的秒传信息](#获取本地文件的秒传信息)
    44    * [导出文件/目录](#导出文件目录)
    45    * [创建目录](#创建目录)
    46    * [删除文件/目录](#删除文件目录)
    47    * [拷贝文件/目录](#拷贝文件目录)
    48    * [移动/重命名文件/目录](#移动重命名文件目录)
    49    * [分享文件/目录](#分享文件目录)
    50      + [设置分享文件/目录](#设置分享文件目录)
    51      + [列出已分享文件/目录](#列出已分享文件目录)
    52      + [取消分享文件/目录](#取消分享文件目录)
    53    * [离线下载](#离线下载)
    54      + [添加离线下载任务](#添加离线下载任务)
    55      + [精确查询离线下载任务](#精确查询离线下载任务)
    56      + [查询离线下载任务列表](#查询离线下载任务列表)
    57      + [取消离线下载任务](#取消离线下载任务)
    58      + [删除离线下载任务](#删除离线下载任务)
    59    * [回收站](#回收站)
    60      + [列出回收站文件列表](#列出回收站文件列表)
    61      + [还原回收站文件或目录](#还原回收站文件或目录)
    62      + [删除回收站文件或目录/清空回收站](#删除回收站文件或目录清空回收站)
    63    * [显示和修改程序配置项](#显示和修改程序配置项)
    64    * [测试通配符](#测试通配符)
    65    * [工具箱](#工具箱)
    66  - [初级使用教程](#初级使用教程)
    67    * [1. 查看程序使用说明](#1-查看程序使用说明)
    68    * [2. 登录百度帐号 (必做)](#2-登录百度帐号-必做)
    69    * [3. 切换网盘工作目录](#3-切换网盘工作目录)
    70    * [4. 网盘内列出文件和目录](#4-网盘内列出文件和目录)
    71    * [5. 下载文件](#5-下载文件)
    72    * [6. 设置下载最大并发量](#6-设置下载最大并发量)
    73    * [7. 退出程序](#7-退出程序)
    74  - [常见问题](#常见问题)
    75  - [TODO](#todo)
    76  - [相关文档](#相关文档)
    77  - [交流反馈](#交流反馈)
    78  - [捐助](#捐助)
    79  
    80  <!-- tocstop -->
    81  
    82  # 特色
    83  
    84  多平台支持, 支持 Windows, macOS, linux, 移动设备等.
    85  
    86  百度帐号多用户支持;
    87  
    88  通配符匹配网盘路径和 Tab 自动补齐命令和路径, [通配符_百度百科](https://baike.baidu.com/item/通配符);
    89  
    90  [下载](#下载文件目录)网盘内文件, 支持多个文件或目录下载, 支持断点续传和单文件并行下载;
    91  
    92  [上传](#上传文件目录)本地文件, 支持上传大文件(>2GB), 支持多个文件或目录上传;
    93  
    94  [离线下载](#离线下载), 支持http/https/ftp/电驴/磁力链协议.
    95  
    96  # 编译/交叉编译 说明
    97  参见 [编译/交叉编译帮助](https://github.com/iikira/BaiduPCS-Go/wiki/编译-交叉编译帮助)
    98  
    99  # 下载/运行 说明
   100  
   101  Go语言程序, 可直接在[发布页](https://github.com/iikira/BaiduPCS-Go/releases)下载使用.
   102  
   103  可在这里下载最新commit对应的**测试版**: https://ci.appveyor.com/project/iikira/baidupcs-go/build/artifacts
   104  
   105  如果程序运行时输出乱码, 请检查下终端的编码方式是否为 `UTF-8`.
   106  
   107  使用本程序之前, 建议学习一些 linux 基础知识 和 基础命令.
   108  
   109  如果未带任何参数运行程序, 程序将会进入仿Linux shell系统用户界面的cli交互模式, 可直接运行相关命令.
   110  
   111  cli交互模式下, 光标所在行的前缀应为 `BaiduPCS-Go >`, 如果登录了百度帐号则格式为 `BaiduPCS-Go:<工作目录> <百度ID>$ `
   112  
   113  程序会提供相关命令的使用说明.
   114  
   115  ## Windows
   116  
   117  程序应在 命令提示符 (Command Prompt) 或 PowerShell 中运行, 在 mintty (例如: GitBash) 可能会有显示问题.
   118  
   119  也可直接双击程序运行, 具体使用方法请参见 [命令列表及说明](#命令列表及说明) 和 [初级使用教程](#初级使用教程).
   120  
   121  ## Linux / macOS
   122  
   123  程序应在 终端 (Terminal) 运行.
   124  
   125  具体使用方法请参见 [命令列表及说明](#命令列表及说明) 和 [初级使用教程](#初级使用教程).
   126  
   127  ## Android / iOS
   128  
   129  > Android / iOS 移动设备操作比较麻烦, 不建议在移动设备上使用本程序.
   130  
   131  安卓, 建议使用 [Termux](https://termux.com) 或 [NeoTerm](https://github.com/NeoTerm/NeoTerm) 或 终端模拟器, 以提供终端环境.
   132  
   133  示例: [Android 运行本项目程序参考示例](https://github.com/iikira/BaiduPCS-Go/wiki/Android-运行本项目程序参考示例), 有兴趣的可以参考一下.
   134  
   135  苹果iOS, 需要越狱, 在 Cydia 搜索下载并安装 MobileTerminal, 或者其他提供终端环境的软件.
   136  
   137  示例: [iOS 运行本项目程序参考示例](https://github.com/iikira/BaiduPCS-Go/wiki/iOS-运行本项目程序参考示例), 有兴趣的可以参考一下.
   138  
   139  具体使用方法请参见 [命令列表及说明](#命令列表及说明) 和 [初级使用教程](#初级使用教程).
   140  
   141  # 命令列表及说明
   142  
   143  ## 注意 ! ! !
   144  
   145  命令的前缀 `BaiduPCS-Go` 为指向程序运行的全路径名 (ARGv 的第一个参数)
   146  
   147  直接运行程序时, 未带任何其他参数, 则程序进入cli交互模式, 运行以下命令时, 要把命令的前缀 `BaiduPCS-Go` 去掉!
   148  
   149  cli交互模式已支持按tab键自动补全命令和路径.
   150  
   151  ## 检测程序更新
   152  ```
   153  BaiduPCS-Go update
   154  ```
   155  
   156  ## 登录百度帐号
   157  
   158  ### 常规登录百度帐号
   159  
   160  支持在线验证绑定的手机号或邮箱,
   161  ```
   162  BaiduPCS-Go login
   163  ```
   164  
   165  ### 使用百度 BDUSS 来登录百度帐号
   166  
   167  [关于 获取百度 BDUSS](https://github.com/iikira/BaiduPCS-Go/wiki/关于-获取百度-BDUSS)
   168  
   169  ```
   170  BaiduPCS-Go login -bduss=<BDUSS>
   171  ```
   172  
   173  #### 例子
   174  ```
   175  BaiduPCS-Go login -bduss=1234567
   176  ```
   177  ```
   178  BaiduPCS-Go login
   179  请输入百度用户名(手机号/邮箱/用户名), 回车键提交 > 1234567
   180  ```
   181  
   182  ## 列出帐号列表
   183  
   184  ```
   185  BaiduPCS-Go loglist
   186  ```
   187  
   188  列出所有已登录的百度帐号
   189  
   190  ## 获取当前帐号
   191  
   192  ```
   193  BaiduPCS-Go who
   194  ```
   195  
   196  ## 切换百度帐号
   197  
   198  切换已登录的百度帐号
   199  ```
   200  BaiduPCS-Go su <uid>
   201  ```
   202  ```
   203  BaiduPCS-Go su
   204  
   205  请输入要切换帐号的 # 值 >
   206  ```
   207  
   208  ## 退出百度帐号
   209  
   210  退出当前登录的百度帐号
   211  ```
   212  BaiduPCS-Go logout
   213  ```
   214  
   215  程序会进一步确认退出帐号, 防止误操作.
   216  
   217  ## 获取网盘配额
   218  
   219  ```
   220  BaiduPCS-Go quota
   221  ```
   222  获取网盘的总储存空间, 和已使用的储存空间
   223  
   224  ## 切换工作目录
   225  ```
   226  BaiduPCS-Go cd <目录>
   227  ```
   228  
   229  ### 切换工作目录后自动列出工作目录下的文件和目录
   230  ```
   231  BaiduPCS-Go cd -l <目录>
   232  ```
   233  
   234  #### 例子
   235  ```
   236  # 切换 /我的资源 工作目录
   237  BaiduPCS-Go cd /我的资源
   238  
   239  # 切换 上级目录
   240  BaiduPCS-Go cd ..
   241  
   242  # 切换 根目录
   243  BaiduPCS-Go cd /
   244  
   245  # 切换 /我的资源 工作目录, 并自动列出 /我的资源 下的文件和目录
   246  BaiduPCS-Go cd -l 我的资源
   247  
   248  # 使用通配符
   249  BaiduPCS-Go cd /我的*
   250  ```
   251  
   252  ## 输出工作目录
   253  ```
   254  BaiduPCS-Go pwd
   255  ```
   256  
   257  ## 列出目录
   258  
   259  列出当前工作目录的文件和目录或指定目录
   260  ```
   261  BaiduPCS-Go ls
   262  ```
   263  ```
   264  BaiduPCS-Go ls <目录>
   265  ```
   266  
   267  ### 可选参数
   268  ```
   269  -asc: 升序排序
   270  -desc: 降序排序
   271  -time: 根据时间排序
   272  -name: 根据文件名排序
   273  -size: 根据大小排序
   274  ```
   275  
   276  #### 例子
   277  ```
   278  # 列出 我的资源 内的文件和目录
   279  BaiduPCS-Go ls 我的资源
   280  
   281  # 绝对路径
   282  BaiduPCS-Go ls /我的资源
   283  
   284  # 降序排序
   285  BaiduPCS-Go ls -desc 我的资源
   286  
   287  # 按文件大小降序排序
   288  BaiduPCS-Go ls -size -desc 我的资源
   289  
   290  # 使用通配符
   291  BaiduPCS-Go ls /我的*
   292  ```
   293  
   294  ## 列出目录树形图
   295  
   296  列出当前工作目录的文件和目录或指定目录的树形图
   297  ```
   298  BaiduPCS-Go tree <目录>
   299  
   300  # 默认获取工作目录元信息
   301  BaiduPCS-Go tree
   302  ```
   303  
   304  ## 获取文件/目录的元信息
   305  ```
   306  BaiduPCS-Go meta <文件/目录1> <文件/目录2> <文件/目录3> ...
   307  
   308  # 默认获取工作目录元信息
   309  BaiduPCS-Go meta
   310  ```
   311  
   312  #### 例子
   313  ```
   314  BaiduPCS-Go meta 我的资源
   315  BaiduPCS-Go meta /
   316  ```
   317  
   318  ## 搜索文件
   319  
   320  按文件名搜索文件(不支持查找目录)。
   321  
   322  默认在当前工作目录搜索.
   323  
   324  ```
   325  BaiduPCS-Go search [-path=<需要检索的目录>] [-r] <关键字>
   326  ```
   327  
   328  #### 例子
   329  ```
   330  # 搜索根目录的文件
   331  BaiduPCS-Go search -path=/ 关键字
   332  
   333  # 搜索当前工作目录的文件
   334  BaiduPCS-Go search 关键字
   335  
   336  # 递归搜索当前工作目录的文件
   337  BaiduPCS-Go search -r 关键字
   338  ```
   339  
   340  ## 下载文件/目录
   341  ```
   342  BaiduPCS-Go download <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...
   343  BaiduPCS-Go d <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...
   344  ```
   345  
   346  ### 可选参数
   347  ```
   348    --test          测试下载, 此操作不会保存文件到本地
   349    --ow            overwrite, 覆盖已存在的文件
   350    --status        输出所有线程的工作状态
   351    --save          将下载的文件直接保存到当前工作目录
   352    --saveto value  将下载的文件直接保存到指定的目录
   353    -x              为文件加上执行权限, (windows系统无效)
   354    --mode value    下载模式, 可选值: pcs, stream, locate, 默认为 locate, 相关说明见上面的帮助 (default: "locate")
   355    -p value        指定下载线程数 (default: 0)
   356    -l value        指定同时进行下载文件的数量 (default: 0)
   357    --retry value   下载失败最大重试次数 (default: 3)
   358    --nocheck       下载文件完成后不校验文件
   359  
   360  ```
   361  
   362  下载的文件默认保存到 **程序所在目录** 的 download/ 目录, 支持设置指定目录, 重名的文件会自动跳过!
   363  
   364  下载的文件默认保存到, **程序所在目录**的 **download/** 目录.
   365  
   366  通过 `BaiduPCS-Go config set -savedir <savedir>`, 自定义保存的目录.
   367  
   368  支持多个文件或目录下载.
   369   
   370  支持下载完成后自动校验文件, 但并不是所有的文件都支持校验!
   371   
   372  自动跳过下载重名的文件!
   373  
   374  [关于下载的简单说明](https://github.com/iikira/BaiduPCS-Go/wiki/%E5%85%B3%E4%BA%8E%E4%B8%8B%E8%BD%BD%E7%9A%84%E7%AE%80%E5%8D%95%E8%AF%B4%E6%98%8E)
   375  
   376  #### 下载模式说明
   377  
   378  * pcs: 通过百度网盘的 PCS API 下载
   379  
   380  * stream: 通过百度网盘的 PCS API, 以流式文件的方式下载, 效果同 pcs
   381  
   382  * locate: 默认的下载模式。从百度网盘 Android 客户端, 获取下载链接的方式来下载
   383  
   384  #### 例子
   385  ```
   386  # 设置保存目录, 保存到 D:\Downloads
   387  # 注意区别反斜杠 "\" 和 斜杠 "/" !!!
   388  BaiduPCS-Go config set -savedir D:/Downloads
   389  
   390  # 下载 /我的资源/1.mp4
   391  BaiduPCS-Go d /我的资源/1.mp4
   392  
   393  # 下载 /我的资源 整个目录!!
   394  BaiduPCS-Go d /我的资源
   395  
   396  # 下载网盘内的全部文件!!
   397  BaiduPCS-Go d /
   398  BaiduPCS-Go d *
   399  ```
   400  
   401  ## 上传文件/目录
   402  ```
   403  BaiduPCS-Go upload <本地文件/目录的路径1> <文件/目录2> <文件/目录3> ... <目标目录>
   404  BaiduPCS-Go u <本地文件/目录的路径1> <文件/目录2> <文件/目录3> ... <目标目录>
   405  ```
   406  
   407  * 上传默认采用分片上传的方式, 上传的文件将会保存到, <目标目录>.
   408  
   409  * 遇到同名文件将会自动覆盖!!
   410  
   411  * 当上传的文件名和网盘的目录名称相同时, 不会覆盖目录, 防止丢失数据.
   412  
   413  
   414  #### 注意:
   415  
   416  * 分片上传之后, 服务器可能会记录到错误的文件md5, 可使用 fixmd5 命令尝试修复文件的MD5值, 修复md5不一定能成功, 但文件的完整性是没问题的.
   417  
   418  fixmd5 命令使用方法:
   419  ```
   420  BaiduPCS-Go fixmd5 -h
   421  ```
   422  
   423  * 禁用分片上传可以保证服务器记录到正确的md5.
   424  
   425  * 禁用分片上传时只能使用单线程上传, 指定的单个文件上传最大线程数将会无效.
   426  
   427  #### 例子:
   428  ```
   429  # 将本地的 C:\Users\Administrator\Desktop\1.mp4 上传到网盘 /视频 目录
   430  # 注意区别反斜杠 "\" 和 斜杠 "/" !!!
   431  BaiduPCS-Go upload C:/Users/Administrator/Desktop/1.mp4 /视频
   432  
   433  # 将本地的 C:\Users\Administrator\Desktop\1.mp4 和 C:\Users\Administrator\Desktop\2.mp4 上传到网盘 /视频 目录
   434  BaiduPCS-Go upload C:/Users/Administrator/Desktop/1.mp4 C:/Users/Administrator/Desktop/2.mp4 /视频
   435  
   436  # 将本地的 C:\Users\Administrator\Desktop 整个目录上传到网盘 /视频 目录
   437  BaiduPCS-Go upload C:/Users/Administrator/Desktop /视频
   438  ```
   439  
   440  ## 获取下载直链
   441  ```
   442  BaiduPCS-Go locate <文件1> <文件2> ...
   443  ```
   444  
   445  #### 注意
   446  
   447  若该功能无法正常使用, 提示`user is not authorized, hitcode:xxx`, 尝试更换 User-Agent 为 `netdisk;2.2.51.6;netdisk;10.0.63;PC;android-android`:
   448  ```
   449  BaiduPCS-Go config set -user_agent "netdisk;2.2.51.6;netdisk;10.0.63;PC;android-android"
   450  ```
   451  
   452  ## 手动秒传文件
   453  ```
   454  BaiduPCS-Go rapidupload -length=<文件的大小> -md5=<文件的md5值> -slicemd5=<文件前256KB切片的md5值(可选)> -crc32=<文件的crc32值(可选)> <保存的网盘路径, 需包含文件名>
   455  BaiduPCS-Go ru -length=<文件的大小> -md5=<文件的md5值> -slicemd5=<文件前256KB切片的md5值(可选)> -crc32=<文件的crc32值(可选)> <保存的网盘路径, 需包含文件名>
   456  ```
   457  
   458  注意: 使用此功能秒传文件, 前提是知道文件的大小, md5, 前256KB切片的 md5 (可选), crc32 (可选), 且百度网盘中存在一模一样的文件.
   459  
   460  上传的文件将会保存到网盘的目标目录.
   461  
   462  遇到同名文件将会自动覆盖! 
   463  
   464  可能无法秒传 20GB 以上的文件!!
   465  
   466  #### 例子:
   467  ```
   468  # 如果秒传成功, 则保存到网盘路径 /test
   469  BaiduPCS-Go rapidupload -length=56276137 -md5=fbe082d80e90f90f0fb1f94adbbcfa7f -slicemd5=38c6a75b0ec4499271d4ea38a667ab61 -crc32=314332359 /test
   470  ```
   471  
   472  
   473  ## 修复文件MD5
   474  ```
   475  BaiduPCS-Go fixmd5 <文件1> <文件2> <文件3> ...
   476  ```
   477  
   478  尝试修复文件的MD5值, 以便于校验文件的完整性和导出文件.
   479  
   480  使用分片上传文件, 当文件分片数大于1时, 百度网盘服务端最终计算所得的md5值和本地的不一致, 这可能是百度网盘的bug.
   481  
   482  不过把上传的文件下载到本地后,对比md5值是匹配的, 也就是文件在传输中没有发生损坏.
   483  
   484  对于MD5值可能有误的文件, 程序会在获取文件的元信息时, 给出MD5值 "可能不正确" 的提示, 表示此文件可以尝试进行MD5值修复.
   485  
   486  修复文件MD5不一定能成功, 原因可能是服务器未刷新, 可过几天后再尝试.
   487  
   488  修复文件MD5的原理为秒传文件, 即修复文件MD5成功后, 文件的**创建日期, 修改日期, fs_id, 版本历史等信息**将会被覆盖, 修复的MD5值将覆盖原先的MD5值, 但不影响文件的完整性.
   489  
   490  注意: 无法修复 **20GB** 以上文件的 md5!!
   491  
   492  #### 例子:
   493  ```
   494  # 修复 /我的资源/1.mp4 的 MD5 值
   495  BaiduPCS-Go fixmd5 /我的资源/1.mp4
   496  ```
   497  
   498  ## 获取本地文件的秒传信息
   499  ```
   500  BaiduPCS-Go sumfile <本地文件的路径>
   501  BaiduPCS-Go sf <本地文件的路径>
   502  ```
   503  
   504  获取本地文件的大小, md5, 前256KB切片的 md5, crc32, 可用于秒传文件.
   505  
   506  #### 例子:
   507  ```
   508  # 获取 C:\Users\Administrator\Desktop\1.mp4 的秒传信息
   509  BaiduPCS-Go sumfile C:/Users/Administrator/Desktop/1.mp4
   510  ```
   511  
   512  ## 导出文件/目录
   513  ```
   514  BaiduPCS-Go export <文件/目录1> <文件/目录2> ...
   515  BaiduPCS-Go ep <文件/目录1> <文件/目录2> ...
   516  ```
   517  
   518  导出网盘内的文件或目录, 原理为秒传文件, 此操作会生成导出文件或目录的命令.
   519  
   520  #### 注意
   521  
   522  **无法导出 20GB 以上的文件!!**
   523  
   524  **无法导出文件的版本历史等数据!!**
   525  
   526  并不是所有的文件都能导出成功, 程序会列出无法导出的文件列表
   527  
   528  #### 例子:
   529  ```
   530  # 导出当前工作目录:
   531  BaiduPCS-Go export
   532  
   533  # 导出所有文件和目录, 并设置新的根目录为 /root
   534  BaiduPCS-Go export -root=/root /
   535  
   536  # 导出 /我的资源
   537  BaiduPCS-Go export /我的资源
   538  ```
   539  
   540  ## 创建目录
   541  ```
   542  BaiduPCS-Go mkdir <目录>
   543  ```
   544  
   545  #### 例子
   546  ```
   547  BaiduPCS-Go mkdir 123
   548  ```
   549  
   550  ## 删除文件/目录
   551  ```
   552  BaiduPCS-Go rm <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...
   553  ```
   554  
   555  注意: 删除多个文件和目录时, 请确保每一个文件和目录都存在, 否则删除操作会失败.
   556  
   557  被删除的文件或目录可在网盘文件回收站找回.
   558  
   559  #### 例子
   560  ```
   561  # 删除 /我的资源/1.mp4
   562  BaiduPCS-Go rm /我的资源/1.mp4
   563  
   564  # 删除 /我的资源/1.mp4 和 /我的资源/2.mp4
   565  BaiduPCS-Go rm /我的资源/1.mp4 /我的资源/2.mp4
   566  
   567  # 删除 /我的资源 内的所有文件和目录, 但不删除该目录
   568  BaiduPCS-Go rm /我的资源/*
   569  
   570  # 删除 /我的资源 整个目录 !!
   571  BaiduPCS-Go rm /我的资源
   572  ```
   573  
   574  ## 拷贝文件/目录
   575  ```
   576  BaiduPCS-Go cp <文件/目录> <目标 文件/目录>
   577  BaiduPCS-Go cp <文件/目录1> <文件/目录2> <文件/目录3> ... <目标目录>
   578  ```
   579  
   580  注意: 拷贝多个文件和目录时, 请确保每一个文件和目录都存在, 否则拷贝操作会失败.
   581  
   582  #### 例子
   583  ```
   584  # 将 /我的资源/1.mp4 复制到 根目录 /
   585  BaiduPCS-Go cp /我的资源/1.mp4 /
   586  
   587  # 将 /我的资源/1.mp4 和 /我的资源/2.mp4 复制到 根目录 /
   588  BaiduPCS-Go cp /我的资源/1.mp4 /我的资源/2.mp4 /
   589  ```
   590  
   591  ## 移动/重命名文件/目录
   592  ```
   593  # 移动:
   594  BaiduPCS-Go mv <文件/目录1> <文件/目录2> <文件/目录3> ... <目标目录>
   595  # 重命名:
   596  BaiduPCS-Go mv <文件/目录> <重命名的文件/目录>
   597  ```
   598  
   599  注意: 移动多个文件和目录时, 请确保每一个文件和目录都存在, 否则移动操作会失败.
   600  
   601  #### 例子
   602  ```
   603  # 将 /我的资源/1.mp4 移动到 根目录 /
   604  BaiduPCS-Go mv /我的资源/1.mp4 /
   605  
   606  # 将 /我的资源/1.mp4 重命名为 /我的资源/3.mp4
   607  BaiduPCS-Go mv /我的资源/1.mp4 /我的资源/3.mp4
   608  ```
   609  
   610  ## 分享文件/目录
   611  ```
   612  BaiduPCS-Go share
   613  ```
   614  
   615  ### 设置分享文件/目录
   616  ```
   617  BaiduPCS-Go share set <文件/目录1> <文件/目录2> ...
   618  BaiduPCS-Go share s <文件/目录1> <文件/目录2> ...
   619  ```
   620  
   621  ### 列出已分享文件/目录
   622  ```
   623  BaiduPCS-Go share list
   624  BaiduPCS-Go share l
   625  ```
   626  
   627  ### 取消分享文件/目录
   628  ```
   629  BaiduPCS-Go share cancel <shareid_1> <shareid_2> ...
   630  BaiduPCS-Go share c <shareid_1> <shareid_2> ...
   631  ```
   632  
   633  目前只支持通过分享id (shareid) 来取消分享.
   634  
   635  ## 离线下载
   636  ```
   637  BaiduPCS-Go offlinedl
   638  BaiduPCS-Go clouddl
   639  BaiduPCS-Go od
   640  ```
   641  
   642  离线下载支持http/https/ftp/电驴/磁力链协议
   643  
   644  离线下载同时进行的任务数量有限, 超出限制的部分将无法添加.
   645  
   646  ### 添加离线下载任务
   647  ```
   648  BaiduPCS-Go offlinedl add -path=<离线下载文件保存的路径> 资源地址1 地址2 ...
   649  ```
   650  
   651  添加任务成功之后, 返回离线下载的任务ID.
   652  
   653  ### 精确查询离线下载任务
   654  ```
   655  BaiduPCS-Go offlinedl query 任务ID1 任务ID2 ...
   656  ```
   657  
   658  ### 查询离线下载任务列表
   659  ```
   660  BaiduPCS-Go offlinedl list
   661  ```
   662  
   663  ### 取消离线下载任务
   664  ```
   665  BaiduPCS-Go offlinedl cancel 任务ID1 任务ID2 ...
   666  ```
   667  
   668  ### 删除离线下载任务
   669  ```
   670  BaiduPCS-Go offlinedl delete 任务ID1 任务ID2 ...
   671  
   672  # 清空离线下载任务记录, 程序不会进行二次确认, 谨慎操作!!!
   673  BaiduPCS-Go offlinedl delete -all
   674  ```
   675  
   676  #### 例子
   677  ```
   678  # 将百度和腾讯主页, 离线下载到根目录 /
   679  BaiduPCS-Go offlinedl add -path=/ http://baidu.com http://qq.com
   680  
   681  # 添加磁力链接任务
   682  BaiduPCS-Go offlinedl add magnet:?xt=urn:btih:xxx
   683  
   684  # 查询任务ID为 12345 的离线下载任务状态
   685  BaiduPCS-Go offlinedl query 12345
   686  
   687  # 取消任务ID为 12345 的离线下载任务
   688  BaiduPCS-Go offlinedl cancel 12345
   689  ```
   690  
   691  ## 回收站
   692  ```
   693  BaiduPCS-Go recycle
   694  ```
   695  
   696  回收站操作.
   697  
   698  ### 列出回收站文件列表
   699  ```
   700  BaiduPCS-Go recycle list
   701  ```
   702  
   703  #### 可选参数
   704  ```
   705    --page value  回收站文件列表页数 (default: 1)
   706  ```
   707  
   708  ### 还原回收站文件或目录
   709  ```
   710  BaiduPCS-Go recycle restore <fs_id 1> <fs_id 2> <fs_id 3> ...
   711  ```
   712  
   713  根据文件/目录的 fs_id, 还原回收站指定的文件或目录.
   714  
   715  ### 删除回收站文件或目录/清空回收站
   716  ```
   717  BaiduPCS-Go recycle delete [-all] <fs_id 1> <fs_id 2> <fs_id 3> ...
   718  ```
   719  
   720  根据文件/目录的 fs_id 或 -all 参数, 删除回收站指定的文件或目录或清空回收站.
   721  
   722  #### 例子
   723  ```
   724  # 从回收站还原两个文件, 其中的两个文件的 fs_id 分别为 1013792297798440 和 643596340463870
   725  BaiduPCS-Go recycle restore 1013792297798440 643596340463870
   726  
   727  # 从回收站删除两个文件, 其中的两个文件的 fs_id 分别为 1013792297798440 和 643596340463870
   728  BaiduPCS-Go recycle delete 1013792297798440 643596340463870
   729  
   730  # 清空回收站, 程序不会进行二次确认, 谨慎操作!!!
   731  BaiduPCS-Go recycle delete -all
   732  ```
   733  
   734  ## 显示程序环境变量
   735  ```
   736  BaiduPCS-Go env
   737  ```
   738  
   739  BAIDUPCS_GO_CONFIG_DIR: 配置文件路径,
   740  
   741  BAIDUPCS_GO_VERBOSE: 是否启用调试.
   742  
   743  ## 显示和修改程序配置项
   744  ```
   745  # 显示配置
   746  BaiduPCS-Go config
   747  
   748  # 设置配置
   749  BaiduPCS-Go config set
   750  ```
   751  
   752  注意: v3.5 以后, 程序对配置文件储存路径的寻找做了调整, 配置文件所在的目录可以是程序本身所在目录, 也可以是家目录.
   753  
   754  配置文件所在的目录为家目录的情况:
   755  
   756  Windows: `%APPDATA%\BaiduPCS-Go`
   757  
   758  其他操作系统: `$HOME/.config/BaiduPCS-Go`
   759  
   760  可通过设置环境变量 `BAIDUPCS_GO_CONFIG_DIR`, 指定配置文件存放的目录.
   761  
   762  谨慎修改 `appid`, `user_agent`, `pcs_ua`, `pan_ua` 的值, 否则访问网盘服务器时, 可能会出现错误.
   763  
   764  `cache_size` 的值支持可选设置单位了, 单位不区分大小写, `b` 和 `B` 均表示字节的意思, 如 `64KB`, `1MB`, `32kb`, `65536b`, `65536`.
   765  
   766  `max_upload_parallel`, `max_download_load` 的值支持可选设置单位了, 单位为每秒的传输速率, 后缀`/s` 可省略, 如 `2MB/s`, `2MB`, `2m`, `2mb` 均为一个意思.
   767  
   768  #### 例子
   769  ```
   770  # 显示所有可以设置的值
   771  BaiduPCS-Go config -h
   772  BaiduPCS-Go config set -h
   773  
   774  # 设置下载文件的储存目录
   775  BaiduPCS-Go config set -savedir D:/Downloads
   776  
   777  # 设置下载最大并发量为 150
   778  BaiduPCS-Go config set -max_parallel 150
   779  
   780  # 组合设置
   781  BaiduPCS-Go config set -max_parallel 150 -savedir D:/Downloads
   782  ```
   783  
   784  ## 测试通配符
   785  ```
   786  BaiduPCS-Go match <通配符表达式>
   787  ```
   788  
   789  测试通配符匹配路径, 操作成功则输出所有匹配到的路径.
   790  
   791  #### 例子
   792  ```
   793  # 匹配 /我的资源 目录下所有mp4格式的文件
   794  BaiduPCS-Go match /我的资源/*.mp4
   795  ```
   796  
   797  ## 工具箱
   798  ```
   799  BaiduPCS-Go tool
   800  ```
   801  
   802  目前工具箱支持加解密文件等.
   803  
   804  # 初级使用教程
   805  
   806  新手建议: **双击运行程序**, 进入仿 Linux shell 的 cli 交互模式;
   807  
   808  cli交互模式下, 光标所在行的前缀应为 `BaiduPCS-Go >`, 如果登录了百度帐号则格式为 `BaiduPCS-Go:<工作目录> <百度ID>$ `
   809  
   810  以下例子的命令, 均为 cli交互模式下的命令
   811  
   812  运行命令的正确操作: **输入命令, 按一下回车键 (键盘上的 Enter 键)**, 程序会接收到命令并输出结果
   813  
   814  ## 1. 查看程序使用说明
   815  
   816  cli交互模式下, 运行命令 `help`
   817  
   818  ## 2. 登录百度帐号 (必做)
   819  
   820  cli交互模式下, 运行命令 `login -h` (注意空格) 查看帮助
   821  
   822  cli交互模式下, 运行命令 `login` 程序将会提示你输入百度用户名(手机号/邮箱/用户名)和密码, 必要时还可以在线验证绑定的手机号或邮箱
   823  
   824  ## 3. 切换网盘工作目录
   825  
   826  cli交互模式下, 运行命令 `cd /我的资源` 将工作目录切换为 `/我的资源` (前提: 该目录存在于网盘)
   827  
   828  目录支持通配符匹配, 所以你也可以这样: 运行命令 `cd /我的*` 或 `cd /我的??` 将工作目录切换为 `/我的资源`, 简化输入.
   829  
   830  将工作目录切换为 `/我的资源` 成功后, 运行命令 `cd ..` 切换上级目录, 即将工作目录切换为 `/`
   831  
   832  为什么要这样设计呢, 举个例子,
   833  
   834  假设 你要下载 `/我的资源` 内名为 `1.mp4` 和 `2.mp4` 两个文件, 而未切换工作目录, 你需要依次运行以下命令:
   835  
   836  ```
   837  d /我的资源/1.mp4
   838  d /我的资源/2.mp4
   839  ```
   840  
   841  而切换网盘工作目录之后, 依次运行以下命令:
   842  
   843  ```
   844  cd /我的资源
   845  d 1.mp4
   846  d 2.mp4
   847  ```
   848  
   849  这样就达到了简化输入的目的
   850  
   851  ## 4. 网盘内列出文件和目录
   852  
   853  cli交互模式下, 运行命令 `ls -h` (注意空格) 查看帮助
   854  
   855  cli交互模式下, 运行命令 `ls` 来列出当前所在目录的文件和目录
   856  
   857  cli交互模式下, 运行命令 `ls /我的资源` 来列出 `/我的资源` 内的文件和目录
   858  
   859  cli交互模式下, 运行命令 `ls ..` 来列出当前所在目录的上级目录的文件和目录
   860  
   861  ## 5. 下载文件
   862  
   863  说明: 下载的文件默认保存到 download/ 目录 (文件夹)
   864  
   865  cli交互模式下, 运行命令 `d -h` (注意空格) 查看帮助
   866  
   867  cli交互模式下, 运行命令 `d /我的资源/1.mp4` 来下载位于 `/我的资源/1.mp4` 的文件 `1.mp4` , 该操作等效于运行以下命令:
   868  
   869  ```
   870  cd /我的资源
   871  d 1.mp4
   872  ```
   873  
   874  现在已经支持目录 (文件夹) 下载, 所以, 运行以下命令, 会下载 `/我的资源` 内的所有文件 (违规文件除外):
   875  
   876  ```
   877  d /我的资源
   878  ```
   879  
   880  ## 6. 设置下载最大并发量
   881  
   882  cli交互模式下, 运行命令 `config set -h` (注意空格) 查看设置帮助以及可供设置的值
   883  
   884  cli交互模式下, 运行命令 `config set -max_parallel 2` 将下载最大并发量设置为 2
   885  
   886  注意:下载最大并发量的值不易设置过高, 可能会导致百度帐号被限制下载
   887  
   888  ## 7. 退出程序
   889  
   890  运行命令 `quit` 或 `exit` 或 组合键 `Ctrl+C` 或 组合键 `Ctrl+D`
   891  
   892  # 已知问题
   893  
   894  * 分片上传文件时, 当文件分片数大于1, 网盘端最终计算所得的md5值和本地的不一致, 这可能是百度网盘的bug, 测试把上传的文件下载到本地后,对比md5值是匹配的. 可通过秒传的原理来修复md5值.
   895  
   896  # 常见问题
   897  
   898  参见 [常见问题](https://github.com/iikira/BaiduPCS-Go/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)
   899  
   900  # TODO
   901  
   902  
   903  # 相关文档
   904  详见: https://github.com/iikira/BaiduPCS-Go/tree/master/docs
   905  
   906  # 交流反馈
   907  
   908  提交Issue: [Issues](https://github.com/iikira/BaiduPCS-Go/issues)
   909  
   910  邮箱: i@mail.iikira.com
   911  
   912  QQ群: 178324706