linux上传文件到百度云盘(使用shell脚本,不依赖python库)

前言(属于废话)
众所周知,百度云网盘虽然下载慢,但是容量确实很足的,很多时候我们都会把文件备份到百度云盘。作为程序员,我们都是能通过代码解决的问题,坚决不手动处理。
当我查找通过代码+定时任务自动备份文件到百度云方案的时候,大部分都是通过安装python,然后调用python的库文件解决。为了能更加简单处理,写了这个通过shell上传文件到百度云盘的脚本,不需要任何依赖,更加的简单方便。

如果此脚本对你有用的话,点个赞呗

运行环境
linux环境,目前只在CentOS 7环境测试,其他环境需自测

最终目的
  • 通过一行代码上传文件到百度云:

    ./uploadBaiduCloud.sh 需要上传的文件路径 百度云网盘的文件路径

    应用场景
    通过Jenkins或者linux调用定时任务,定时导出Mysql等数据库文件,然后每天自动备份百度云
    使用脚本在没有界面的linux环境中上传文件到百度云
    其他、等等
    使用教程
    一、在百度云网盘开放平台创建应用
    注册并登录百度云网盘开放平台,通过个人认证,并创建应用
    文档地址:https://pan.baidu.com/union/doc/Bl0eta7z8


    应用创建完毕后,我们就可以获取到AppKey以及SecretKey

    二、使用授权码方式获取Access Token
    1.发起授权码Code请求
    请求URL:
    http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=您应用的AppKey&redirect_uri=oob&scope=basic,netdisk&

    参数替换:
    client_id=您应用的AppKey

    效果图:

    2.换取AccessToken凭证
    请求URL:https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=上一步的授权码&client_id=您应用的AppKey&client_secret=您应用的SecretKey&redirect_uri=oob

    参数替换:

    code=上一步的授权码
    client_id=您应用的AppKey
    client_secret=您应用的SecretKey

    效果图:

    三、配置脚本,并上传文件到百度云网盘
    步骤一主要是我们在百度云的操作,比较复杂以及繁琐,但是没有办法,你用人家的产品,就要使用人家的授权方式,剩下的所有操作我都封装成脚本了。具体步骤如下

    创建脚本配置文件(为了账号安全,要不我每一次提交代码,密钥都被网上看到了,都给我网盘上传文件可咋整)
    在linux系统家目录下创建.baiduDiskTokenFile配置文件,root账号在/root/目录下,其他账户在/home/账户名下

    文件内容包含一下部分

    accessToken=步骤一第2点获取到的access_token
    refreshToken=步骤一第2点获取到的refresh_token
    appKey=步骤一第1点获取到的SecretKey
    secretKey=步骤一第1点获取到的SecretKey
    expiresDate=可以先空着

    下载脚本,并赋予可执行权限

    wget https://gitee.com/zhaojiyuan/sh-lib/raw/master/uploadBaiduCloud.sh && chmod +x uploadBaiduCloud.sh

    上传文件到百度云
    比如说上传uploadBaiduCloud.sh到百度云网盘根目录backups文件夹下,使用如下命令

    ./uploadBaiduCloud.sh uploadBaiduCloud.sh /backups/aaa.sh

    脚本实现流程图

    备注
    1.百度云配置文件路径可以变更,但是需要自己去脚本中修改第3行的tokenFile对应的值
    2.从百度获取的授权码有效期是30天,但是为了保险起见,我会检查当有效期超过二十天时候,便自动刷新获取新的授权码
    3.提前刷新获取收的授权码,并不会使老的授权码失效,应该是等30天后才能自动失效,但是我并没有测试具体的失效时间
    4.拿到授权码就可以对网盘内容进行增删概查,因此授权码应当妥善保管

    问题解答
    感谢网友的问题反馈,这里做个问题解答记录,给其他人避坑用

    问:提示上传成功,找不到文件
    答:请确认配置文件对应的网盘,别看错网盘了。

    问:报错 ./uploadBaiduCloud.sh: 第 187 行:[: : 期待整数表达式
    答:.baiduDiskTokenFile配置文件格式为windows格式,请尽量用Vim编辑,用windows留意换行符要用linux的换行符号。

    问:上传大文件报错
    答:文件上传大小,百度云是有限制的,开通会员最大单个文件上传可以到4G,再大是真没办法解决了。注意:大文件上传耗时比较长,如果网络波动等可能造成失败,请自行重试。
    虽然百度云官方描述开通会员可以上传20G的文件,但是文件上传超过4M需要分割成低于4M的分片文件,分片不能超过1024片,也就意味着只能上传低于4G的文件,超过4G请用百度云客户端上传。
    百度云官方解释,文档地址:https://pan.baidu.com/union/doc/3ksg0s9ye
    ————————————————
    本文转载自CSDN,原文链接:https://blog.csdn.net/zhaojiyuan1024/article/details/125465229

温馨提醒:
1.除标注原创外,本站文章和资源大部分为网络收集整理或网友上传,若不慎侵犯您的权利,请联系管理员,本站在核实无误后将根据作者意见进行处理。
2.本站需要注册会员才可下载,若您购买后发现资源失效或不能使用,请联系管理员获取最新资源或处理退款。
3.本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责,但我们会尽力保证其准确性。
4.本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向管理员举报。

异客居 » linux上传文件到百度云盘(使用shell脚本,不依赖python库)

发表回复