github.com/qjfoidnh/BaiduPCS-Go@v0.0.0-20231011165705-caa18a3765f3/README.md (about)

     1  # BaiduPCS-Go 百度网盘客户端(加强版)
     2  
     3  
     4  仿 Linux shell 文件处理命令的百度网盘命令行客户端.
     5  
     6  iikira/BaiduPCS-Go was largely inspired by [GangZhuo/BaiduPCS](https://github.com/GangZhuo/BaiduPCS) and this project was largely based on iikira/BaiduPCS-Go
     7  
     8  ## 注意
     9  
    10  此版本基于iikira原版BaiduPCS-Go v3.6.2继续开发, 并添加了转存功能.
    11  
    12  本软件不提供超出官方客户端的下载提速, 普通用户和SVIP的配置建议参见 [显示和修改程序配置项](#显示和修改程序配置项)
    13  
    14  <!-- toc -->
    15  ## 目录
    16  
    17  - [特色](#特色)
    18  - [版本更新](#版本更新)
    19  - [编译/交叉编译 说明](#编译交叉编译-说明)
    20  - [下载/运行 说明](#下载运行-说明)
    21    * [安装](#安装)
    22    * [Windows](#windows)
    23    * [Linux / macOS](#linux--macos)
    24    * [Android / iOS](#android--ios)
    25  - [命令列表及说明](#命令列表及说明)
    26    * [注意 ! ! !](#注意---)
    27    * [检测程序更新](#检测程序更新)
    28    * [登录百度帐号](#登录百度帐号)
    29    * [列出帐号列表](#列出帐号列表)
    30    * [获取当前帐号](#获取当前帐号)
    31    * [切换百度帐号](#切换百度帐号)
    32    * [退出百度帐号](#退出百度帐号)
    33    * [获取网盘配额](#获取网盘配额)
    34    * [切换工作目录](#切换工作目录)
    35    * [输出工作目录](#输出工作目录)
    36    * [列出目录](#列出目录)
    37    * [列出目录树形图](#列出目录树形图)
    38    * [获取文件/目录的元信息](#获取文件目录的元信息)
    39    * [搜索文件](#搜索文件)
    40    * [下载文件/目录](#下载文件目录)
    41    * [上传文件/目录](#上传文件目录)
    42    * [获取下载直链](#获取下载直链)
    43    * [修复文件MD5](#修复文件MD5)
    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    * [8. 退出程序](#8-退出程序)
    75  - [已知问题](#已知问题)
    76  - [TODO](#todo)
    77  - [交流反馈](#交流反馈)
    78  
    79  <!-- tocstop -->
    80  
    81  # 特色
    82  
    83  多平台支持, 支持 Windows, macOS, linux, 移动设备等.
    84  
    85  百度帐号多用户支持;
    86  
    87  通配符匹配网盘路径和 Tab 自动补齐命令和路径, [通配符_百度百科](https://baike.baidu.com/item/通配符);
    88  
    89  [下载](#下载文件目录)网盘内文件, 支持多个文件或目录下载, 支持断点续传和单文件并行下载;
    90  
    91  [上传](#上传文件目录)本地文件, 支持上传大文件(>2GB), 支持多个文件或目录上传;
    92  
    93  [转存](#转存文件目录)其他用户分享的文件, 支持带密码的分享链接; 
    94  
    95  [导出](#导出文件目录)网盘内的文件秒传链接, 可选导出BaiduPCS-Go原生格式或通用格式;
    96  
    97  [离线下载](#离线下载), 支持http/https/ftp/电驴/磁力链协议.
    98  
    99  # 版本更新
   100  **2023.09.30** v3.9.5
   101  - 恢复秒传转存功能, 使用前需设置accessToken, 参见setastoken --help
   102  - 本地文件上传用秒传无须accessToken
   103  - fix #301
   104  - fix #302
   105  
   106  **2023.09.06** v3.9.5-beta
   107  - 恢复了秒传转存(支持长短链), 感谢油猴脚本开发者tousakarin的贡献
   108  - 新秒传接口需要开发者授权, 稳定性未知, 该测试版本仅供有秒传强需求的用户试用, 请谨慎更新
   109  
   110  **2023.09.05** v3.9.4
   111  - fix #244, 修复断点上传时偶发崩溃
   112  - 优化本地上传秒传失败时的处理逻辑
   113  
   114  **2023.08.26** v3.9.3
   115  - 因官方接口从原理层面封禁秒传, 取消秒传转存功能
   116  - 更新部分使用说明
   117  - 建议使用文件上传功能的用户更新此版本
   118  
   119  **2023.06.03** v3.9.2
   120  - 修复秒传链接无法转存, 因官方接口变动秒传已不再支持短链接格式
   121  - 修复上传文件无法使用秒传
   122  - fix #254 支持-f参数输出带密码分享链接
   123  - fix #251 根据mengzonefire同志提供函数增加md5解密
   124  
   125  **2023.03.19** v3.9.1
   126  - 修复秒传转存返回错误码9019
   127  
   128  **2022.12.04** v3.9.0:
   129  - 优化转存错误提示
   130  - fix #239
   131  - update go version to 1.18
   132  
   133  **2022.11.25** v3.8.9:
   134  - fix #234, 继续修复无法转存文件
   135  
   136  **2022.11.12** v3.8.8:
   137  - fix #234, 修复无法转存文件
   138  
   139  **2022.2.18** v3.8.7:
   140  - fix #175, 在正式上传前即进行文件大小检测
   141  
   142  **2022.2.14** v3.8.6:
   143  - fix #160 #173, 修复上传出现空文件的bug
   144  - fix #165, 支持自带提取码的转存链接
   145  - fix #175, upload增加-policy=rsync策略, 配合--norapid使用, 只跳过大小未发生改变的文件
   146  - 鉴于 #172, 建议下载线程数最大不超过12
   147  
   148  **2022.1.1** v3.8.5:
   149  #### 该版本存在已知问题将导致上传文件失败及出现空文件,建议跳过更新
   150  - 2022新年好, 本次更新增加较多特性, 欢迎测试
   151  - fix #146, 提前fail和skip上传策略中重名文件的检测环节(存在问题)
   152  - fix #158, config可配置关闭文件名合法性检测
   153  - fix #141, download增加--mtime选项可保持文件修改时间
   154  - fix #130, config可配置force_login_username, 强制登录指定用户名
   155  - 首条下载链接不可用时自动切换, 增加下载成功率
   156  
   157  **2021.10.6** v3.8.4:
   158  - fix 登录时可能出现内存溢出
   159  - 上传文件名允许包含单引号
   160  
   161  **2021.8.27** v3.8.3:
   162  - fix 更换默认panUA解决svip限速
   163  - fix 移除失效的秒传修复功能 
   164  - 优化秒传逻辑, 提高成功率
   165  - 优化秒传导出逻辑, 提高新文件的导出成功率  
   166  
   167  **2021.7.20** v3.8.2:
   168  - fix 读取大量文件信息容易超时
   169  - fix 秒传链接文件名带"#"时解析错误
   170  - share list增加分享下载数显示  
   171  - config增加配置: 上传的同名文件处理策略
   172  
   173  **2021.6.9** v3.8.1:
   174  - fix 部分旧链接无法转存
   175  - 增加上传同名文件自动跳过选项
   176  
   177  **2021.5.21** v3.8.0:
   178  - fix 上传到100M左右自动回滚(待测试)
   179  - fix 个别正常的秒传链接无法转存
   180  - fix 文件名含有百分号导出异常
   181  - 优化上传重试策略(待测试)
   182  
   183  **2021.4.14** v3.7.9:
   184  - fix 上传时异常退出导致无法加载断点信息
   185  - fix 上传偶发出现0B/s卡住
   186  - 上传时预先检查文件名合法性
   187  - 在线更新使用镜像源加速
   188  
   189  **2021.3.20** v3.7.8:
   190  
   191  - 优化了上传的输出信息格式
   192  - 优化了上传逻辑,提升上传速度
   193  - transfer增加--fix参数,可转存被屏蔽的秒传链接(inspired by [dupan-rapid-extract](https://github.com/mengzonefire/dupan-rapid-extract))
   194  
   195  **2021.3.11** v3.7.7:
   196  
   197  - fix 移动和重命名文件时末尾```/```导致报错
   198  - fix 3.7.2版本后在线升级无效
   199  - fix 转存误报缺少STOKEN
   200  
   201  **2021.2.23** v3.7.6:
   202  
   203  - fix 下载文件报```x509: certificate is valid```错误
   204  - 完善了下载错误的捕获种类
   205  - download增加--fullpath参数,本地目录保留网盘从根目录开始的完整结构
   206  
   207  **2021.2.8** v3.7.5:
   208  
   209  - fix 某些时候误报stoken缺失
   210  - fix windows平台上秒传链接转存失败
   211  - fix 某些时候pcs请求缺少Host
   212  - 当分享链接包含多文件/目录时,可选归档到第一个文件命名的目录里(不支持秒传)
   213  
   214  **2021.1.31** v3.7.4:
   215  
   216  - fix 下载目录会丢失目录结构
   217  - fix 分享列表状态信息显示错误
   218  - 支持自定义文件上传服务器
   219  
   220  **2021.1.22** v3.7.3:
   221  
   222  - 分享支持自定义分享码和有效天数
   223  - 转存支持转存完毕后自动下载到默认目录
   224  - 增加恢复默认配置功能
   225  - tree命令支持指定输出最大层数和带fsid输出
   226  
   227  **2021.1.9** v3.7.2:
   228  
   229  - 基本修复了登录验证失效问题([#15](https://github.com/qjfoidnh/BaiduPCS-Go/issues/15))
   230  - 优化下载模块的实现策略, 保证稳定性同时进一步提升下载速度 (需按[显示和修改程序配置项](#显示和修改程序配置项)中建议修改)
   231  - update 功能恢复, 以后可以在线升级了
   232  - 支持导出秒传链接不写文件, 直接输出到控制台; 支持通用秒传格式导出, 具体参见export --help
   233  - 其他bug修正
   234  
   235  **2021.1.2** v3.7.1:
   236  
   237  - 支持了多文件并发上传,文件并发数和单文件分片数可在配置中指定
   238  - 修复了最大同时下载文件数配置不生效的问题
   239  - 修正了部分显示和帮助的错误
   240  
   241  **2020.12.19** v3.7.0:
   242  
   243  * 替换了iikira版本的失效仓库
   244  * 转存功能支持旧的短链接
   245  * 默认关闭下载文件校验,配置文件可设置开启
   246  * 修复了关闭校验时会误报下载失败的问题
   247  * 转存功能除了cookies方式登录,现已支持用户名密码登录和bduss登录;bduss登录需同时指定stoken
   248  
   249  **2020.11.08** v3.6.3:
   250  
   251  * 修复转存失败
   252  * 修复分享文件失败
   253  
   254  
   255  # 编译/交叉编译 说明
   256  设置好 GOOS 和 GOARCH 环境变量,
   257  
   258  运行 go tool dist list 查看所有支持的 GOOS/GOARCH
   259  
   260  ## Linux/Darwin 例子: 编译 Windows 下的 64 位程序
   261  ```
   262  GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build
   263  ```
   264  ## Windows 例子: 编译 Linux 下的 32 位程序
   265  ```
   266  set GOOS=linux
   267  set GOARCH=386
   268  set CGO_ENABLED=0
   269  go build
   270  ```
   271  
   272  # 下载/运行 说明
   273  
   274  Go语言程序, 常用几种平台的已编译程序可直接在[蓝奏云](https://wws.lanzoui.com/b01berebe)下载使用. 密码:4pix
   275  
   276  如果程序运行时输出乱码, 请检查下终端的编码方式是否为 `UTF-8`.
   277  
   278  使用本程序之前, 建议学习一些 linux 基础知识 和 基础命令.
   279  
   280  如果未带任何参数运行程序, 程序将会进入仿Linux shell系统用户界面的cli交互模式, 可直接运行相关命令.
   281  
   282  cli交互模式下, 光标所在行的前缀应为 `BaiduPCS-Go >`, 如果登录了百度帐号则格式为 `BaiduPCS-Go:<工作目录> <百度ID>$ `
   283  
   284  程序会提供相关命令的使用说明.
   285  
   286  ## 安装
   287  
   288  
   289  ## Windows
   290  
   291  程序应在 命令提示符 (Command Prompt) 或 PowerShell 中运行, 在 mintty (例如: GitBash) 可能会有显示问题.
   292  
   293  也可直接双击程序运行, 具体使用方法请参见 [命令列表及说明](#命令列表及说明) 和 [初级使用教程](#初级使用教程).
   294  
   295  ## Linux / macOS
   296  
   297  程序应在 终端 (Terminal) 运行.
   298  
   299  具体使用方法请参见 [命令列表及说明](#命令列表及说明) 和 [初级使用教程](#初级使用教程).
   300  
   301  ## Android / iOS
   302  
   303  > Android / iOS 移动设备操作比较麻烦, 不建议在移动设备上使用本程序. 移动设备不可直接使用预编译的Linux arm64版本, 使用者需下载源码自行交叉编译.
   304  
   305  安卓, 建议使用 [Termux](https://termux.com) 或 [NeoTerm](https://github.com/NeoTerm/NeoTerm) 或 终端模拟器, 以提供终端环境.
   306  
   307  示例: [Android 运行本项目程序参考示例](https://web.archive.org/web/20190820154934/https://github.com/iikira/BaiduPCS-Go/wiki/Android-%E8%BF%90%E8%A1%8C%E6%9C%AC%E9%A1%B9%E7%9B%AE%E7%A8%8B%E5%BA%8F%E5%8F%82%E8%80%83%E7%A4%BA%E4%BE%8B), 有兴趣的可以参考一下.
   308  
   309  苹果iOS, 需要越狱, 在 Cydia 搜索下载并安装 MobileTerminal, 或者其他提供终端环境的软件.
   310  
   311  示例: [iOS 运行本项目程序参考示例](https://web.archive.org/web/20190820155025/https://github.com/iikira/BaiduPCS-Go/wiki/iOS-%E8%BF%90%E8%A1%8C%E6%9C%AC%E9%A1%B9%E7%9B%AE%E7%A8%8B%E5%BA%8F%E5%8F%82%E8%80%83%E7%A4%BA%E4%BE%8B), 有兴趣的可以参考一下.
   312  
   313  具体使用方法请参见 [命令列表及说明](#命令列表及说明) 和 [初级使用教程](#初级使用教程).
   314  
   315  # 命令列表及说明
   316  
   317  ## 注意 ! ! !
   318  
   319  命令的前缀 `BaiduPCS-Go` 为指向程序运行的全路径名 (ARGv 的第一个参数)
   320  
   321  直接运行程序时, 未带任何其他参数, 则程序进入cli交互模式, 运行以下命令时, 要把命令的前缀 `BaiduPCS-Go` 去掉!
   322  
   323  cli交互模式已支持按tab键自动补全命令和路径.
   324  
   325  ## 检测程序更新
   326  ```
   327  BaiduPCS-Go update
   328  ```
   329  
   330  ## 登录百度帐号
   331  
   332  ### 常规登录百度帐号
   333  
   334  支持在线验证绑定的手机号或邮箱,
   335  注: 此方式已长期不维护, 建议使用其他登录方式
   336  ```
   337  BaiduPCS-Go login
   338  ```
   339  
   340  ### 使用百度 BDUSS 来登录百度帐号
   341  
   342  [关于 获取百度 BDUSS](https://blog.csdn.net/ykiwmy/article/details/103730962)
   343  
   344  ```
   345  BaiduPCS-Go login -bduss=<BDUSS>
   346  ```
   347  
   348  ### 使用百度 BDUSS 和 百度网盘 STOKEN 来登录百度账号
   349  
   350  STOKEN 获取方式与 BDUSS 基本相同。注意 STOKEN 必须在百度网盘页面获取,否则无效.
   351  
   352  ```
   353  BaiduPCS-Go login -bduss=<BDUSS> -stoken=<STOKEN>
   354  ```
   355  
   356  ### 使用百度 Cookies 来登录百度账号
   357  
   358  [关于 获取百度 Cookies](https://jingyan.baidu.com/article/5553fa829a6a9e65a23934b0.html)
   359  教程中为百度经验的Cookies获取, 这里换成百度网盘首页即可.
   360  
   361  ```
   362  BaiduPCS-Go login -cookies=<Cookies>
   363  ```
   364  
   365  #### 例子
   366  ```
   367  BaiduPCS-Go login -bduss=1234567
   368  ```
   369  ```
   370  BaiduPCS-Go login
   371  请输入百度用户名(手机号/邮箱/用户名), 回车键提交 > 1234567
   372  ```
   373  ```
   374  BaiduPCS-Go login -cookies="BAIDUID=50949C0890YG9735EA6Q3870AFE38:FG=1; BIDUPSID=112335C0ACCAFFJW675EA69A870AFE38; PSTM=1981928511; BDORZ=D6745EBF6F3SW24E515D22A1598; PANWEB=1; BDUSS=ASAYUGFHSTFKGBGSU; STOKEN=gfsdge9gisfgspig34254d7879eee5756b10sgeyrw5vyw342td510ffc9414d32251; SCRC=cwrywec5evyetra26bvvehefvfg6a8; BDCLND=C%4sfgGysrZ%2BML6; PANPSC=wreyewygdfhdggedhsdfg4353"
   375  ```
   376  
   377  ## 列出帐号列表
   378  
   379  ```
   380  BaiduPCS-Go loglist
   381  ```
   382  
   383  列出所有已登录的百度帐号
   384  
   385  ## 获取当前帐号
   386  
   387  ```
   388  BaiduPCS-Go who
   389  ```
   390  
   391  ## 切换百度帐号
   392  
   393  切换已登录的百度帐号
   394  ```
   395  BaiduPCS-Go su <uid>
   396  ```
   397  ```
   398  BaiduPCS-Go su
   399  
   400  请输入要切换帐号的 # 值 >
   401  ```
   402  
   403  ## 退出百度帐号
   404  
   405  退出当前登录的百度帐号
   406  ```
   407  BaiduPCS-Go logout
   408  ```
   409  
   410  程序会进一步确认退出帐号, 防止误操作.
   411  
   412  ## 获取网盘配额
   413  
   414  ```
   415  BaiduPCS-Go quota
   416  ```
   417  获取网盘的总储存空间, 和已使用的储存空间
   418  
   419  ## 切换工作目录
   420  ```
   421  BaiduPCS-Go cd <目录>
   422  ```
   423  
   424  ### 切换工作目录后自动列出工作目录下的文件和目录
   425  ```
   426  BaiduPCS-Go cd -l <目录>
   427  ```
   428  
   429  #### 例子
   430  ```
   431  # 切换 /我的资源 工作目录
   432  BaiduPCS-Go cd /我的资源
   433  
   434  # 切换 上级目录
   435  BaiduPCS-Go cd ..
   436  
   437  # 切换 根目录
   438  BaiduPCS-Go cd /
   439  
   440  # 切换 /我的资源 工作目录, 并自动列出 /我的资源 下的文件和目录
   441  BaiduPCS-Go cd -l 我的资源
   442  
   443  # 使用通配符
   444  BaiduPCS-Go cd /我的*
   445  ```
   446  
   447  ## 输出工作目录
   448  ```
   449  BaiduPCS-Go pwd
   450  ```
   451  
   452  ## 列出目录
   453  
   454  列出当前工作目录的文件和目录或指定目录
   455  ```
   456  BaiduPCS-Go ls
   457  ```
   458  ```
   459  BaiduPCS-Go ls <目录>
   460  ```
   461  
   462  ### 可选参数
   463  ```
   464  -asc: 升序排序
   465  -desc: 降序排序
   466  -time: 根据时间排序
   467  -name: 根据文件名排序
   468  -size: 根据大小排序
   469  ```
   470  
   471  #### 例子
   472  ```
   473  # 列出 我的资源 内的文件和目录
   474  BaiduPCS-Go ls 我的资源
   475  
   476  # 绝对路径
   477  BaiduPCS-Go ls /我的资源
   478  
   479  # 降序排序
   480  BaiduPCS-Go ls -desc 我的资源
   481  
   482  # 按文件大小降序排序
   483  BaiduPCS-Go ls -size -desc 我的资源
   484  
   485  # 使用通配符
   486  BaiduPCS-Go ls /我的*
   487  ```
   488  
   489  ## 列出目录树形图
   490  
   491  列出当前工作目录的文件和目录或指定目录的树形图
   492  ```
   493  BaiduPCS-Go tree <目录>
   494  
   495  # 默认获取工作目录元信息
   496  BaiduPCS-Go tree
   497  ```
   498  
   499  ## 获取文件/目录的元信息
   500  ```
   501  BaiduPCS-Go meta <文件/目录1> <文件/目录2> <文件/目录3> ...
   502  
   503  # 默认获取工作目录元信息
   504  BaiduPCS-Go meta
   505  ```
   506  
   507  #### 例子
   508  ```
   509  BaiduPCS-Go meta 我的资源
   510  BaiduPCS-Go meta /
   511  ```
   512  
   513  ## 搜索文件
   514  
   515  按文件名搜索文件(不支持查找目录)。
   516  
   517  默认在当前工作目录搜索.
   518  
   519  ```
   520  BaiduPCS-Go search [-path=<需要检索的目录>] [-r] <关键字>
   521  ```
   522  
   523  #### 例子
   524  ```
   525  # 搜索根目录的文件
   526  BaiduPCS-Go search -path=/ 关键字
   527  
   528  # 搜索当前工作目录的文件
   529  BaiduPCS-Go search 关键字
   530  
   531  # 递归搜索当前工作目录的文件
   532  BaiduPCS-Go search -r 关键字
   533  ```
   534  
   535  ## 下载文件/目录
   536  ```
   537  BaiduPCS-Go download <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...
   538  BaiduPCS-Go d <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...
   539  ```
   540  
   541  ### 可选参数
   542  ```
   543    --test          测试下载, 此操作不会保存文件到本地
   544    --ow            overwrite, 覆盖已存在的文件
   545    --status        输出所有线程的工作状态
   546    --save          将下载的文件直接保存到当前工作目录
   547    --saveto value  将下载的文件直接保存到指定的目录
   548    -x              为文件加上执行权限, (windows系统无效)
   549    --mode value    下载模式, 可选值: pcs, stream, locate, 默认为 locate, 相关说明见上面的帮助 (default: "locate")
   550    -p value        指定下载线程数 (default: 0)
   551    -l value        指定同时进行下载文件的数量 (default: 0)
   552    --retry value   下载失败最大重试次数 (default: 3)
   553    --nocheck       下载文件完成后不校验文件
   554  
   555  ```
   556  
   557  下载的文件默认保存到 **程序所在目录** 的 download/ 目录, 支持设置指定目录, 重名的文件会自动跳过!
   558  
   559  下载的文件默认保存到, **程序所在目录**的 **download/** 目录.
   560  
   561  通过 `BaiduPCS-Go config set -savedir <savedir>`, 自定义保存的目录.
   562  
   563  支持多个文件或目录下载.
   564  
   565  支持下载完成后自动校验文件, 但并不是所有的文件都支持校验!
   566  
   567  自动跳过下载重名的文件!
   568  
   569  
   570  #### 例子
   571  ```
   572  # 设置保存目录, 保存到 D:\Downloads
   573  # 注意区别反斜杠 "\" 和 斜杠 "/" !!!
   574  BaiduPCS-Go config set -savedir D:/Downloads
   575  
   576  # 下载 /我的资源/1.mp4
   577  BaiduPCS-Go d /我的资源/1.mp4
   578  
   579  # 下载 /我的资源 整个目录!!
   580  BaiduPCS-Go d /我的资源
   581  
   582  # 下载网盘内的全部文件!!
   583  BaiduPCS-Go d /
   584  BaiduPCS-Go d *
   585  ```
   586  
   587  ## 上传文件/目录
   588  ```
   589  BaiduPCS-Go upload <本地文件/目录的路径1> <文件/目录2> <文件/目录3> ... <目标目录>
   590  BaiduPCS-Go u <本地文件/目录的路径1> <文件/目录2> <文件/目录3> ... <目标目录>
   591  ```
   592  
   593  * 上传默认采用分片上传的方式, 上传的文件将会保存到, <目标目录>.
   594  
   595  * 遇到同名文件将会自动覆盖!!
   596  
   597  * 当上传的文件名和网盘的目录名称相同时, 不会覆盖目录, 防止丢失数据.
   598  
   599  
   600  #### 注意:
   601  
   602  * 分片上传之后, 服务器可能会记录到错误的文件md5, 可使用 fixmd5 命令尝试修复文件的MD5值, 修复md5不一定能成功, 但文件的完整性是没问题的.
   603  
   604  fixmd5 命令使用方法:
   605  ```
   606  BaiduPCS-Go fixmd5 -h
   607  ```
   608  
   609  * 禁用分片上传可以保证服务器记录到正确的md5.
   610  
   611  * 禁用分片上传时只能使用单线程上传, 指定的单个文件上传最大线程数将会无效.
   612  
   613  #### 例子:
   614  ```
   615  # 将本地的 C:\Users\Administrator\Desktop\1.mp4 上传到网盘 /视频 目录
   616  # 注意区别反斜杠 "\" 和 斜杠 "/" !!!
   617  BaiduPCS-Go upload C:/Users/Administrator/Desktop/1.mp4 /视频
   618  
   619  # 将本地的 C:\Users\Administrator\Desktop\1.mp4 和 C:\Users\Administrator\Desktop\2.mp4 上传到网盘 /视频 目录
   620  BaiduPCS-Go upload C:/Users/Administrator/Desktop/1.mp4 C:/Users/Administrator/Desktop/2.mp4 /视频
   621  
   622  # 将本地的 C:\Users\Administrator\Desktop 整个目录上传到网盘 /视频 目录
   623  BaiduPCS-Go upload C:/Users/Administrator/Desktop /视频
   624  ```
   625  
   626  ## 获取下载直链
   627  ```
   628  BaiduPCS-Go locate <文件1> <文件2> ...
   629  ```
   630  
   631  #### 注意
   632  
   633  若该功能无法正常使用, 提示`user is not authorized, hitcode:xxx`, 尝试更换 User-Agent 为 `netdisk;2.2.51.6;netdisk;10.0.63;PC;android-android`:
   634  ```
   635  BaiduPCS-Go config set -user_agent "netdisk;2.2.51.6;netdisk;10.0.63;PC;android-android"
   636  ```
   637  
   638  
   639  ## 修复文件MD5
   640  ```
   641  BaiduPCS-Go fixmd5 <文件1> <文件2> <文件3> ...
   642  ```
   643  
   644  尝试修复文件的MD5值, 以便于校验文件的完整性和导出文件.
   645  
   646  使用分片上传文件, 当文件分片数大于1时, 百度网盘服务端最终计算所得的md5值和本地的不一致, 这可能是百度网盘的bug.
   647  
   648  不过把上传的文件下载到本地后,对比md5值是匹配的, 也就是文件在传输中没有发生损坏.
   649  
   650  对于MD5值可能有误的文件, 程序会在获取文件的元信息时, 给出MD5值 "可能不正确" 的提示, 表示此文件可以尝试进行MD5值修复.
   651  
   652  修复文件MD5不一定能成功, 原因可能是服务器未刷新, 可过几天后再尝试.
   653  
   654  修复文件MD5的原理为秒传文件, 即修复文件MD5成功后, 文件的**创建日期, 修改日期, fs_id, 版本历史等信息**将会被覆盖, 修复的MD5值将覆盖原先的MD5值, 但不影响文件的完整性.
   655  
   656  注意: 无法修复 **20GB** 以上文件的 md5!!
   657  
   658  #### 例子:
   659  ```
   660  # 修复 /我的资源/1.mp4 的 MD5 值
   661  BaiduPCS-Go fixmd5 /我的资源/1.mp4
   662  ```
   663  
   664  ## 获取本地文件的秒传信息
   665  
   666  ```
   667  
   668  BaiduPCS-Go sumfile <本地文件的路径>
   669  
   670  BaiduPCS-Go sf <本地文件的路径>
   671  
   672  ```
   673  
   674  获取本地文件的大小, md5, 前256KB切片的 md5, crc32, 可用于秒传文件.
   675  
   676  #### 例子:
   677  
   678  ```
   679  
   680  # 获取 C:\Users\Administrator\Desktop\1.mp4 的秒传信息
   681  
   682  BaiduPCS-Go sumfile C:/Users/Administrator/Desktop/1.mp4
   683  
   684  ```
   685  
   686  ## 导出文件/目录
   687  
   688  ```
   689  
   690  BaiduPCS-Go export <文件/目录1> <文件/目录2> ...
   691  
   692  BaiduPCS-Go ep <文件/目录1> <文件/目录2> ...
   693  
   694  ```
   695  
   696  导出网盘内的文件或目录, 原理为秒传文件, 此操作会生成导出文件或目录的命令.
   697  
   698  #### 注意
   699  
   700  **无法导出 20GB 以上的文件!!**
   701  
   702  **无法导出文件的版本历史等数据!!**
   703  
   704  **以通用秒传格式导出会丢失文件路径信息!!**
   705  
   706  并不是所有的文件都能导出成功, 程序会列出无法导出的文件列表
   707  
   708  #### 例子:
   709  
   710  ```
   711  
   712  # 导出当前工作目录:
   713  
   714  BaiduPCS-Go export
   715  
   716  # 导出所有文件和目录, 并设置新的根目录为 /root
   717  
   718  BaiduPCS-Go export -root=/root /
   719  
   720  # 导出 /我的资源
   721  
   722  BaiduPCS-Go export /我的资源
   723  
   724  # 导出 /我的资源 格式为通用秒传链接格式
   725  
   726  BaiduPCS-Go export /我的资源 --link
   727  
   728  ```
   729  
   730  ## 创建目录
   731  ```
   732  BaiduPCS-Go mkdir <目录>
   733  ```
   734  
   735  #### 例子
   736  ```
   737  BaiduPCS-Go mkdir 123
   738  ```
   739  
   740  ## 删除文件/目录
   741  ```
   742  BaiduPCS-Go rm <网盘文件或目录的路径1> <文件或目录2> <文件或目录3> ...
   743  ```
   744  
   745  注意: 删除多个文件和目录时, 请确保每一个文件和目录都存在, 否则删除操作会失败.
   746  
   747  被删除的文件或目录可在网盘文件回收站找回.
   748  
   749  #### 例子
   750  ```
   751  # 删除 /我的资源/1.mp4
   752  BaiduPCS-Go rm /我的资源/1.mp4
   753  
   754  # 删除 /我的资源/1.mp4 和 /我的资源/2.mp4
   755  BaiduPCS-Go rm /我的资源/1.mp4 /我的资源/2.mp4
   756  
   757  # 删除 /我的资源 内的所有文件和目录, 但不删除该目录
   758  BaiduPCS-Go rm /我的资源/*
   759  
   760  # 删除 /我的资源 整个目录 !!
   761  BaiduPCS-Go rm /我的资源
   762  ```
   763  
   764  ## 拷贝文件/目录
   765  ```
   766  BaiduPCS-Go cp <文件/目录> <目标 文件/目录>
   767  BaiduPCS-Go cp <文件/目录1> <文件/目录2> <文件/目录3> ... <目标目录>
   768  ```
   769  
   770  注意: 拷贝多个文件和目录时, 请确保每一个文件和目录都存在, 否则拷贝操作会失败.
   771  
   772  #### 例子
   773  ```
   774  # 将 /我的资源/1.mp4 复制到 根目录 /
   775  BaiduPCS-Go cp /我的资源/1.mp4 /
   776  
   777  # 将 /我的资源/1.mp4 和 /我的资源/2.mp4 复制到 根目录 /
   778  BaiduPCS-Go cp /我的资源/1.mp4 /我的资源/2.mp4 /
   779  ```
   780  
   781  ## 移动/重命名文件/目录
   782  ```
   783  # 移动:
   784  BaiduPCS-Go mv <文件/目录1> <文件/目录2> <文件/目录3> ... <目标目录>
   785  # 重命名:
   786  BaiduPCS-Go mv <文件/目录> <重命名的文件/目录>
   787  ```
   788  
   789  注意: 移动多个文件和目录时, 请确保每一个文件和目录都存在, 否则移动操作会失败.
   790  
   791  #### 例子
   792  ```
   793  # 将 /我的资源/1.mp4 移动到 根目录 /
   794  BaiduPCS-Go mv /我的资源/1.mp4 /
   795  
   796  # 将 /我的资源/1.mp4 重命名为 /我的资源/3.mp4
   797  BaiduPCS-Go mv /我的资源/1.mp4 /我的资源/3.mp4
   798  ```
   799  
   800  ## 转存文件/目录
   801  ```
   802  # 转存分享链接里的文件到当前目录:
   803  BaiduPCS-Go transfer <分享链接> <提取码>
   804  BaiduPCS-Go transfer <秒传链接>
   805  ```
   806  
   807  注意: 转存文件保存到当前工作目录下, 不支持指定.
   808  
   809  #### 例子
   810  ```
   811  # 将 https://pan.baidu.com/s/12L_ZZVNxz5f_2CccoyyVrW (提取码edv4) 转存到当前目录
   812  BaiduPCS-Go transfer https://pan.baidu.com/s/12L_ZZVNxz5f_2CccoyyVrW edv4
   813  BaiduPCS-Go transfer https://pan.baidu.com/s/12L_ZZVNxz5f_2CccoyyVrW?pwd=edv4
   814  ```
   815  
   816  ## 分享文件/目录
   817  ```
   818  BaiduPCS-Go share
   819  ```
   820  
   821  ### 设置分享文件/目录
   822  ```
   823  BaiduPCS-Go share set <文件/目录1> <文件/目录2> ...
   824  BaiduPCS-Go share s <文件/目录1> <文件/目录2> ...
   825  ```
   826  
   827  ### 列出已分享文件/目录
   828  ```
   829  BaiduPCS-Go share list
   830  BaiduPCS-Go share l
   831  ```
   832  
   833  ### 取消分享文件/目录
   834  ```
   835  BaiduPCS-Go share cancel <shareid_1> <shareid_2> ...
   836  BaiduPCS-Go share c <shareid_1> <shareid_2> ...
   837  ```
   838  
   839  目前只支持通过分享id (shareid) 来取消分享.
   840  
   841  ## 离线下载
   842  ```
   843  BaiduPCS-Go offlinedl
   844  BaiduPCS-Go clouddl
   845  BaiduPCS-Go od
   846  ```
   847  
   848  离线下载支持http/https/ftp/电驴/磁力链协议
   849  
   850  离线下载同时进行的任务数量有限, 超出限制的部分将无法添加.
   851  
   852  ### 添加离线下载任务
   853  ```
   854  BaiduPCS-Go offlinedl add -path=<离线下载文件保存的路径> 资源地址1 地址2 ...
   855  ```
   856  
   857  添加任务成功之后, 返回离线下载的任务ID.
   858  
   859  ### 精确查询离线下载任务
   860  ```
   861  BaiduPCS-Go offlinedl query 任务ID1 任务ID2 ...
   862  ```
   863  
   864  ### 查询离线下载任务列表
   865  ```
   866  BaiduPCS-Go offlinedl list
   867  ```
   868  
   869  ### 取消离线下载任务
   870  ```
   871  BaiduPCS-Go offlinedl cancel 任务ID1 任务ID2 ...
   872  ```
   873  
   874  ### 删除离线下载任务
   875  ```
   876  BaiduPCS-Go offlinedl delete 任务ID1 任务ID2 ...
   877  
   878  # 清空离线下载任务记录, 程序不会进行二次确认, 谨慎操作!!!
   879  BaiduPCS-Go offlinedl delete -all
   880  ```
   881  
   882  #### 例子
   883  ```
   884  # 将百度和腾讯主页, 离线下载到根目录 /
   885  BaiduPCS-Go offlinedl add -path=/ http://baidu.com http://qq.com
   886  
   887  # 添加磁力链接任务
   888  BaiduPCS-Go offlinedl add magnet:?xt=urn:btih:xxx
   889  
   890  # 查询任务ID为 12345 的离线下载任务状态
   891  BaiduPCS-Go offlinedl query 12345
   892  
   893  # 取消任务ID为 12345 的离线下载任务
   894  BaiduPCS-Go offlinedl cancel 12345
   895  ```
   896  
   897  ## 回收站
   898  ```
   899  BaiduPCS-Go recycle
   900  ```
   901  
   902  回收站操作.
   903  
   904  ### 列出回收站文件列表
   905  ```
   906  BaiduPCS-Go recycle list
   907  ```
   908  
   909  #### 可选参数
   910  ```
   911    --page value  回收站文件列表页数 (default: 1)
   912  ```
   913  
   914  ### 还原回收站文件或目录
   915  ```
   916  BaiduPCS-Go recycle restore <fs_id 1> <fs_id 2> <fs_id 3> ...
   917  ```
   918  
   919  根据文件/目录的 fs_id, 还原回收站指定的文件或目录.
   920  
   921  ### 删除回收站文件或目录/清空回收站
   922  ```
   923  BaiduPCS-Go recycle delete [-all] <fs_id 1> <fs_id 2> <fs_id 3> ...
   924  ```
   925  
   926  根据文件/目录的 fs_id 或 -all 参数, 删除回收站指定的文件或目录或清空回收站.
   927  
   928  #### 例子
   929  ```
   930  # 从回收站还原两个文件, 其中的两个文件的 fs_id 分别为 1013792297798440 和 643596340463870
   931  BaiduPCS-Go recycle restore 1013792297798440 643596340463870
   932  
   933  # 从回收站删除两个文件, 其中的两个文件的 fs_id 分别为 1013792297798440 和 643596340463870
   934  BaiduPCS-Go recycle delete 1013792297798440 643596340463870
   935  
   936  # 清空回收站, 程序不会进行二次确认, 谨慎操作!!!
   937  BaiduPCS-Go recycle delete -all
   938  ```
   939  
   940  ## 显示程序环境变量
   941  ```
   942  BaiduPCS-Go env
   943  ```
   944  
   945  BAIDUPCS_GO_CONFIG_DIR: 配置文件路径,
   946  
   947  BAIDUPCS_GO_VERBOSE: 是否启用调试.
   948  
   949  ## 显示和修改程序配置项
   950  ```
   951  # 显示配置
   952  BaiduPCS-Go config
   953  
   954  # 设置配置
   955  BaiduPCS-Go config set
   956  ```
   957  
   958  注意: v3.5 以后, 程序对配置文件储存路径的寻找做了调整, 配置文件所在的目录可以是程序本身所在目录, 也可以是家目录.
   959  
   960  配置文件所在的目录为家目录的情况:
   961  
   962  Windows: `%APPDATA%\BaiduPCS-Go`
   963  
   964  其他操作系统: `$HOME/.config/BaiduPCS-Go`
   965  
   966  可通过设置环境变量 `BAIDUPCS_GO_CONFIG_DIR`, 指定配置文件存放的目录.
   967  
   968  谨慎修改 `appid`, `user_agent`, `pcs_ua`, `pan_ua` 的值, 否则访问网盘服务器时, 可能会出现错误.
   969  
   970  上传速度慢的海外用户可尝试修改 `pcs_addr` 值, 选择速度较快的服务器, 目前已知的地址有:
   971  
   972  ```
   973  pcs.baidu.com
   974  c.pcs.baidu.com
   975  c2.pcs.baidu.com
   976  c3.pcs.baidu.com
   977  c4.pcs.baidu.com
   978  c5.pcs.baidu.com
   979  d.pcs.baidu.com
   980  ```
   981  
   982  `cache_size` 的值支持可选设置单位了, 单位不区分大小写, `b` 和 `B` 均表示字节的意思, 如 `64KB`, `1MB`, `32kb`, `65536b`, `65536`.
   983  
   984  `max_download_rate`, `max_upload_rate` 的值支持可选设置单位了, 单位为每秒的传输速率, 后缀`/s` 可省略, 如 `2MB/s`, `2MB`, `2m`, `2mb` 均为一个意思.
   985  
   986  普通用户请将`max_parallel`和`max_download_load`都设置为1, 调大线程数只会在短时间内提升下载速度, 且极易很快触发限速, 导致几小时至几天内账号在各客户端都接近0速. 本软件不支持普通用户提速.
   987  
   988  SVIP用户建议`max_parallel`设置为10以上, 根据实际带宽可调大, 但不建议超过20, `max_download_load`设置为1 - 2, 实验表明可以稳定满速下载.
   989  
   990  #### 例子
   991  ```
   992  # 显示所有可以设置的值
   993  BaiduPCS-Go config -h
   994  BaiduPCS-Go config set -h
   995  
   996  # 设置下载文件的储存目录
   997  BaiduPCS-Go config set -savedir D:/Downloads
   998  
   999  # 设置下载最大并发量为 15
  1000  BaiduPCS-Go config set -max_parallel 15
  1001  
  1002  # 组合设置
  1003  BaiduPCS-Go config set -max_parallel 150 -savedir D:/Downloads
  1004  ```
  1005  
  1006  ## 测试通配符
  1007  ```
  1008  BaiduPCS-Go match <通配符表达式>
  1009  ```
  1010  
  1011  测试通配符匹配路径, 操作成功则输出所有匹配到的路径.
  1012  
  1013  #### 例子
  1014  ```
  1015  # 匹配 /我的资源 目录下所有mp4格式的文件
  1016  BaiduPCS-Go match /我的资源/*.mp4
  1017  ```
  1018  
  1019  ## 工具箱
  1020  ```
  1021  BaiduPCS-Go tool
  1022  ```
  1023  
  1024  目前工具箱支持加解密文件等.
  1025  
  1026  # 初级使用教程
  1027  
  1028  新手建议: **双击运行程序**, 进入仿 Linux shell 的 cli 交互模式;
  1029  
  1030  cli交互模式下, 光标所在行的前缀应为 `BaiduPCS-Go >`, 如果登录了百度帐号则格式为 `BaiduPCS-Go:<工作目录> <百度ID>$ `
  1031  
  1032  以下例子的命令, 均为 cli交互模式下的命令
  1033  
  1034  运行命令的正确操作: **输入命令, 按一下回车键 (键盘上的 Enter 键)**, 程序会接收到命令并输出结果
  1035  
  1036  ## 1. 查看程序使用说明
  1037  
  1038  cli交互模式下, 运行命令 `help`
  1039  
  1040  ## 2. 登录百度帐号 (必做)
  1041  
  1042  cli交互模式下, 运行命令 `login -h` (注意空格) 查看帮助
  1043  
  1044  cli交互模式下, 运行命令 `login` 程序将会提示你输入百度用户名(手机号/邮箱/用户名)和密码, 必要时还可以在线验证绑定的手机号或邮箱
  1045  
  1046  ## 3. 切换网盘工作目录
  1047  
  1048  cli交互模式下, 运行命令 `cd /我的资源` 将工作目录切换为 `/我的资源` (前提: 该目录存在于网盘)
  1049  
  1050  目录支持通配符匹配, 所以你也可以这样: 运行命令 `cd /我的*` 或 `cd /我的??` 将工作目录切换为 `/我的资源`, 简化输入.
  1051  
  1052  将工作目录切换为 `/我的资源` 成功后, 运行命令 `cd ..` 切换上级目录, 即将工作目录切换为 `/`
  1053  
  1054  为什么要这样设计呢, 举个例子,
  1055  
  1056  假设 你要下载 `/我的资源` 内名为 `1.mp4` 和 `2.mp4` 两个文件, 而未切换工作目录, 你需要依次运行以下命令:
  1057  
  1058  ```
  1059  d /我的资源/1.mp4
  1060  d /我的资源/2.mp4
  1061  ```
  1062  
  1063  而切换网盘工作目录之后, 依次运行以下命令:
  1064  
  1065  ```
  1066  cd /我的资源
  1067  d 1.mp4
  1068  d 2.mp4
  1069  ```
  1070  
  1071  这样就达到了简化输入的目的
  1072  
  1073  ## 4. 网盘内列出文件和目录
  1074  
  1075  cli交互模式下, 运行命令 `ls -h` (注意空格) 查看帮助
  1076  
  1077  cli交互模式下, 运行命令 `ls` 来列出当前所在目录的文件和目录
  1078  
  1079  cli交互模式下, 运行命令 `ls /我的资源` 来列出 `/我的资源` 内的文件和目录
  1080  
  1081  cli交互模式下, 运行命令 `ls ..` 来列出当前所在目录的上级目录的文件和目录
  1082  
  1083  ## 5. 下载文件
  1084  
  1085  说明: 下载的文件默认保存到 download/ 目录 (文件夹)
  1086  
  1087  cli交互模式下, 运行命令 `d -h` (注意空格) 查看帮助
  1088  
  1089  cli交互模式下, 运行命令 `d /我的资源/1.mp4` 来下载位于 `/我的资源/1.mp4` 的文件 `1.mp4` , 该操作等效于运行以下命令:
  1090  
  1091  ```
  1092  cd /我的资源
  1093  d 1.mp4
  1094  ```
  1095  
  1096  现在已经支持目录 (文件夹) 下载, 所以, 运行以下命令, 会下载 `/我的资源` 内的所有文件 (违规文件除外):
  1097  
  1098  ```
  1099  d /我的资源
  1100  ```
  1101  
  1102  ## 6. 设置下载最大并发量
  1103  
  1104  cli交互模式下, 运行命令 `config set -h` (注意空格) 查看设置帮助以及可供设置的值
  1105  
  1106  cli交互模式下, 运行命令 `config set -max_parallel 2` 将下载最大并发量设置为 2
  1107  
  1108  注意:普通用户下载最大并发量的值超过1将导致账号被限速; SVIP同样不宜设置过高, 建议10~20
  1109  
  1110  ## 7. 恢复默认配置
  1111  
  1112  cli交互模式下, 运行命令 `config reset`
  1113  
  1114  ## 8. 退出程序
  1115  
  1116  运行命令 `quit` 或 `exit` 或 组合键 `Ctrl+C` 或 组合键 `Ctrl+D`
  1117  
  1118  # 已知问题
  1119  
  1120  * 分片上传文件时, 当文件分片数大于1, 网盘端最终计算所得的md5值和本地的不一致, 这可能是百度网盘的bug, 测试把上传的文件下载到本地后,对比md5值是匹配的. 可通过秒传的原理来修复md5值.
  1121  * 开启MD5校验下载时可能有 check MD5 不通过, 但文件其实并未出错的情况, 使用--no-check下载或配置中启用no_check即可(3.7版本默认已启用).
  1122  * 用户名登录时图片验证码至少要输入两次, 第一次的输入无效
  1123  * 登录出现手机/邮箱验证时要输入至少4次图片验证码
  1124  
  1125  
  1126  # TODO
  1127  
  1128  * 转存文件数量绕过单次限制
  1129  
  1130  # 交流反馈
  1131  
  1132  提交Issue: [Issues](https://github.com/qjfoidnh/BaiduPCS-Go/issues)